求助!!为什么全wa!!!!!!!!!!!!!!!!!!!
查看原帖
求助!!为什么全wa!!!!!!!!!!!!!!!!!!!
746339
goodluck_hao_2007楼主2022/8/9 22:43
#include<bits/stdc++.h>
using namespace std;
const int N=100010,M=1000010;
int n,m,s,idx;
int d[N],head[N],ver[M],Next[M],edge[M];
bool st[N];
priority_queue<pair<int,int> > q;
void add(int a,int b,int w)
{
	ver[++idx]=b;edge[idx]=w;Next[idx]=head[a];head[a]=idx;
}
void dijkstra()
{
	memset(d,0x3f,sizeof(d));
	memset(st,0,sizeof(st));
	d[s]=0;
	q.push(make_pair(0,1));
	while(q.size())
	{
		int x=q.top().second;
		q.pop();
		if(st[x]) continue;
		st[x]=1;
		for(int i=head[x];i;i=Next[i])
		{
			int y=ver[i],z=edge[i];
			if(d[y]>d[x]+z)
			{
				d[y]=d[x]+z;
				q.push(make_pair(-d[y],y));
			}
		}
	}
}
int main()
{
	cin>>n>>m>>s;
	for(int i=0;i<m;i++)
	{
		int a,b,w;
		scanf("%d%d%d",&a,&b,&w);
		add(a,b,w);
	}
	dijkstra();
	for(int i=1;i<=n;i++)
	{
		if(d[i] == 0x3f3f3f3f) printf("2147483647 ");
		else printf("%d ",d[i]);
	}
	return 0;
}
2022/8/9 22:43
加载中...