#include #include #include using namespace std; const int maxn=120; const int maxm=10010; const int INF=999999;//如果在算法中没有先判断是不是
q; q.push(s); visted[s]=1; while(!q.empty()){ int cur=q.front(); q.pop(); visted[cur]=0; for(int i=head[cur];i!=-1;i=edge[i].nxet){ if(dis[edge[i].to]>dis[cur]+edge[i].cost){ dis[edge[i].to]=dis[cur]+edge[i].cost; if(!visted[edge[i].to]){ visted[edge[i].to]=1; q.push(edge[i].to); } } } } } int main() { int n,m; while(cin>>n>>m&&n!=0){ len=1; int a,b,c; memset(visted,0,sizeof(visted)); memset(head,-1,sizeof(head)); for(int i=1;i<=m;i++){ cin>>a>>b>>c; add(a,b,c); add(b,a,c); } for(int i=1;i<=n;i++){ dis[i]=INF; } int s=1;//起点 dis[s]=0;//这是关键,确定哪个点作为源点,使这个dis数组内的其他值为从此点出发到达其他点最短的距离。 SPFA(s); cout<
<