SPFA全WA求助
查看原帖
SPFA全WA求助
1121403
lk_er楼主2024/10/15 23:27

如代码,写的是spfa,但全WA了

#include<bits/stdc++.h>
using namespace std;
const int N=1000005;
struct node
{
	int to;
	int next;
	int weight;
};
node a[N]; 
int head[N];
int d[N];
bool st[N];
int m,n;
int idx;
void add(int ak,int bk,int ck)
{
	a[idx].to=bk;
	a[idx].weight=ck;
	a[idx].next=head[ak];
	head[ak]=idx++;
}
void spfa(int u)
{
	memset(d,0x3f,sizeof d);
	memset(st,false,sizeof st);
	d[u]=0;
	st[u]=1;
	queue<int>q;
	q.push(u);
	while(q.size())
	{
		int k=q.front();
		q.pop();
		st[k]=0;
		for(int i=head[k];i!=-1;i=a[i].next)
		{
			int j=a[i].to;
			if(d[j]>d[k]+a[i].weight)
			{
				d[j]=d[k]+a[i].weight;	
				if(!st[i])
				{
					st[j]=true;				
					q.push(j);	
				}			
			}
		}
	}
}
int main()
{
	cin>>n>>m;
	int u;
	cin>>u;
	int ak,bk,ck;
	memset(head,-1,sizeof head);
	for(int i=1;i<=m;i++)
	{
		cin>>ak>>bk>>ck;
		add(ak,bk,ck);
		add(bk,ak,ck);
	}
	spfa(u);
	for(int i=1;i<=n;i++)
		cout<<d[i]<<" ";
//	cout<<d[n];
	return 0;
2024/10/15 23:27
加载中...