0pts求助
查看原帖
0pts求助
704634
poor_OIer楼主2024/7/7 23:12

Bellman-Ford自己写的都不知道是什么。WA 0pts.

#include<bits/stdc++.h>
using namespace std;
int n,m,s;
int edges,head[10005];
long long dis[10005],ori_dis[10005];
struct Edge{
	int to;
	int next;
	int weight;
}edge[500005];
void add_Edge(int u,int v,int w)
{
	edges++;
	edge[edges].to=v;
	edge[edges].weight=w;
	edge[edges].next=head[u];
	head[u]=edges;
}
int main()
{
	cin>>n>>m>>s;
	for(int i=1;i<=m;i++)
	{
		int u,v,w;
		cin>>u>>v>>w;
		add_Edge(u,v,w);
	}
	for(int i=1;i<=n;i++)
		dis[i]=ori_dis[i]=0x7fffffff;
	dis[s]=ori_dis[s]=0;
	for(int i=1;i<=n-1;i++)
	{
		for(int j=1;j<=n;j++)
			ori_dis[j]=dis[j];
		for(int j=head[i];j;j=edge[j].next)
			if(dis[edge[j].to]>dis[i]+edge[j].weight)
				dis[edge[j].to]=dis[i]+edge[j].weight;
		bool flag=false;
		for(int j=1;j<=n;j++)
			if(ori_dis[j]!=dis[j])
				ori_dis[j]==dis[j],flag=true;
		if(flag==false)
			break;
	}
	for(int i=1;i<=n;i++)
		cout<<dis[i]<<' ';
	return 0;
}
2024/7/7 23:12
加载中...