标题:单源最短路模板,程序错在哪里?
只看楼主
青蝶
Rank: 2
等 级:论坛游民
帖 子:160
专家分:51
注 册:2018-2-4
结帖率:92%
 问题点数:0 回复次数:0 
单源最短路模板,程序错在哪里?
题目链接:https://www.
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<cmath>
#include<algorithm>
using namespace std;

int N,M,S,Fi,Gi,Wi,dis[10005],book[10005],u[500005],v[500005],w[500005],first[10005],next[500005];

int main(void){
    int i,k,m,n;
    scanf("%d %d %d",&N,&M,&S);
    for(i=1;i<=N;i++) first[i]=-1;
    for(i=1;i<=M;i++){
        scanf("%d %d %d",&u[i],&v[i],&w[i]);
        next[i]=first[u[i]];
        first[u[i]]=i;
    }
    for(i=1;i<=N;i++) dis[i]=2147483647;
    memset(book,0,sizeof(book));
    dis[S]=0;
    k=first[S];
    while(k!=-1){
        dis[v[k]]=min(dis[v[k]],w[k]);
        k=next[k];
    }
    book[S]=1;
    n=S;
    for(i=1;i<=N-1;i++){
        m=2147483647;
        k=first[S];
        while(k!=-1){
            if(book[v[k]]==0 && dis[v[k]]<m){
                m=dis[v[k]];
                n=v[k];
            }
            k=next[k];
        }
        if(book[n]==1) break;
        book[n]=1;
        k=first[n];
        while(k!=-1){
            if(dis[v[k]]>dis[n]+w[k]){
                dis[v[k]]=dis[n]+w[k];
            }
            k=next[k];
        }
    }
    for(i=1;i<N;i++) printf("%d ",dis[i]);
    printf("%d\n",dis[N]);
    return 0;
}

提交显示答案错误,求大佬帮忙。
搜索更多相关主题的帖子: include first next for i++ 
2018-09-30 22:15



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-490096-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.096358 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved