求助,第三个点WA了,orz orz orz
查看原帖
求助,第三个点WA了,orz orz orz
372924
第五氪金好难楼主2021/7/19 10:51
#include<bits/stdc++.h>
using namespace std;
const int N=10010;
const long long maxx=2147484647;
int n,m,x,y,s;
long long dis[N],z;
int node[N][2],vis[N];
int head[N],num;
struct Edge{
	int to,next;
	long long d;
}edge[500010];
void SK(int a,int b,long long c)
{	num++;
	edge[num].to=b;
	edge[num].d=c;
	edge[num].next=head[a];
	head[a]=num;
} 
int main()
{	cin>>n>>m>>s;
	for(int i=1;i<=m;i++)
	{	cin>>x>>y>>z;
		SK(x,y,z);
	}
	for(int i=1;i<=n;i++)
	{	dis[i]=maxx;
	}
	dis[s]=0;
	vis[s]=1;
	for(int i=1;i<=n-1;i++)
	{	long long maxn=maxx;
		int tmp=s;
		for(int j=1;j<=n;j++)
		{	if(!vis[j] && dis[j]<maxn)
			{	maxn=dis[j];
				tmp=j;
			}
		}
		vis[tmp]=1;
		for(int j=head[tmp];j;j=edge[j].next)
		{	int k=edge[j].to;
			double d=edge[j].d;
			if(!vis[k] && dis[k]>dis[tmp]+d)
			dis[k]=dis[tmp]+d;
		}
	}
	for(int i=1;i<=n;i++)
	{	cout<<dis[i]<<' ';
	}
	return 0;
}
2021/7/19 10:51
加载中...