T了1,5为啥
查看原帖
T了1,5为啥
492281
longerfu楼主2024/4/11 22:06

T了1,5为啥

#include <iostream>
#include <queue>
#include <cstring>
using namespace std;
struct node{
	int w,to,nxt;
}edge[500010];
int dict[500010];
priority_queue<int>q;
bool vis[500010];
int head[500010];
int cnt;
int n,m,s;
void _add(int u,int v,int w)
{	
	cnt++;
	edge[cnt].w = w;
	edge[cnt].to = v;
	edge[cnt].nxt = head[u];
	head[u] = cnt;
}
int main()
{
	cin>>n>>m>>s;
	for(int i=1;i<=m;i++)
	{
		int u,v,w;
		cin>>u>>v>>w;
		_add(u,v,w);		
	}
	for(int i=1;i<=n;i++) dict[i]=2147483647;
	dict[s] = 0;
	vis[s] = 1;
	q.push(s);
	while(!q.empty())
	{
		int u = q.top();
		q.pop();
		vis[u] = 0;
		for(int i = head[u];i;i=edge[i].nxt)
		{
			int v = edge[i].to;
		//	if(vis[v]) continue;
			if(dict[u]+edge[i].w < dict[v])
			{
				dict[v] = dict[u]+edge[i].w;
				if(vis[v]==0)
				{
					vis[v] = 1;
					q.push(v);	
				}
			}
		}
	}
	for(int i=1; i<=n; i++)
	{
   		cout<<dict[i]<<" ";  
	}
	return 0;
}
2024/4/11 22:06
加载中...