感觉都跟题解一模一样了,怎么还错呢。
查看原帖
感觉都跟题解一模一样了,怎么还错呢。
100151
yazzkl楼主2020/8/18 23:15

code

#include<bits/stdc++.h>
const int inf=99999999;
using namespace std;
struct yaz{
	int nxt;
	int to;
	int dis;	
}edge[inf];
int vis[inf],dis[inf],head[inf];
int cnt=0,a,b,c,n,m,s,i,j,v; 
void add(int from,int to,int dis){
	edge[cnt++].nxt=head[from];
	edge[cnt].to=to;
	edge[cnt].dis=dis;
	head[from]=cnt;
}
void spfa(){
	queue<int> q;
	for(i=1;i<=inf;i++){
		dis[i]=inf;
		vis[i]=0;
	}
	dis[s]=0;
	vis[s]=1;
	q.push(s);
	while(!q.empty()){
		j=q.front();
		q.pop();
		vis[j]=0;
		for(i=head[j];i;i=edge[i].nxt){
			v=edge[i].to;
			if(dis[v]>dis[j]+edge[i].dis){
				dis[v]=dis[j]+edge[i].dis;
				if(!vis[v]){
					vis[v]=1;
					q.push(v);
				}
			}
		}
	}
}
int main(){
	cin>>n>>m>>s;
	for(i=1;i<=m;i++){
		cin>>a>>b>>c;
		add(a,b,c);
	}
	spfa();
	for(i=1;i<=n;i++){
		cout<<dis[i]<<' ';
	}
	return 0;
}

编译运行后就这样: 0 99999999 99999999 4

2020/8/18 23:15
加载中...