模板题爆零求助!
查看原帖
模板题爆零求助!
208131
张驰666楼主2020/10/28 12:38

明明样例和数据1自己测是过了的呀,为什么爆零。。。

#include<bits/stdc++.h>
using namespace std;
struct data
{
	int nxt,num;
};
vector<data> a[100005];
int n,m,s,x,y,z,num[100005];
bool vis[100005];
queue<int> q;
void spfa(int start)
{
	memset(num,(1<<31-1),sizeof(num));
	memset(vis,false,sizeof(vis));
	q.push(start);
	vis[start]=true;
	num[start]=0;
	while(!q.empty())
	{
		int head=q.front();
		vis[head]=false;
		q.pop();
		for(register int i=0;i<a[head].size();i++)
		{
			if(num[head]+a[head][i].num<num[a[head][i].nxt])
			{
				num[a[head][i].nxt]=num[head]+a[head][i].num;
				if(!vis[a[head][i].nxt])
				{
					vis[a[head][i].nxt]=true;
					q.push(a[head][i].nxt);
				}
			}
		}
	}
}
int main()
{
	scanf("%d%d%d",&n,&m,&s);
	for(register int i=1;i<=m;i++)	scanf("%d%d%d",&x,&y,&z),a[x].push_back(data{y,z});
	spfa(s);
	for(register int i=1;i<=n;i++)
	{
		printf("%d\n",num[i]);
	}
}
2020/10/28 12:38
加载中...