#include<bits/stdc++.h>
using namespace std;
const int inf=0x7FFFFFFF;
int minn,w,dist[10005],map_[10005][10005];
int visit[10005],n,m,start,x,y,next_,k;
int main()
{
scanf("%d%d%d",&n,&m,&start);
for(int i=1;i<=n;i++){
visit[i]=1;
dist[i]=inf;
for(int j=1;j<=n;j++){
map_[i][j]=inf;
}
}
for(int i=1;i<=m;i++){
scanf("%d%d%d",&x,&y,&w);
map_[x][y]=min(map_[x][y],w);
}
dist[start]=0;
visit[start]=0;
for(int a=1;a<=n;a++){
minn=inf;
for(int i=1;i<=n;i++){
if(map_[start][i]!=inf){
dist[i]=min(dist[i],map_[start][i]+dist[start]);
}
if(visit[i] && minn>dist[i]){
next_=i;
minn=dist[i];
}
}
if(minn==inf) break;
start=next_;
visit[start]=0;
}
for(int i=1;i<=n;i++){
printf("%d ",dist[i]);
}
return 0;
}
Dijkstra是不是不括以算负数??? 还是邻接表存图存不下???
▄︻┻┳══━ (题目)