求教错在哪里,WA了三个点
查看原帖
求教错在哪里,WA了三个点
137162
胡金梁楼主2021/4/10 15:41
#include<bits/stdc++.h>
using namespace std;
struct node
{
	int to,quan;
	bool operator <(const node& x) const
	{
		return quan>x.quan;
	}
};
vector<node>t[150005];
int dist[150005],mp[150005];
priority_queue<node>que;
void dij(int s)
{
	dist[s]=0;
	que.push((node){s,dist[s]});
	while(!que.empty())
	{
		node dq=que.top();
		que.pop();
		for(int i=0;i<t[dq.to].size();i++)
		{
			node dq2=t[dq.to][i];
			if(dist[dq2.to]>dq.quan+dq2.quan)
			{
				dist[dq2.to]=dq.quan+dq2.quan;
				que.push((node){dq2.to,dist[dq2.to]});
			}
		}
	}
}
int main()
{
    int n,m,kai;
	cin>>n>>m>>kai;
	for(int i=1;i<=m;i++)
	{
		int x,y,z;
		cin>>x>>y>>z;
		t[x].push_back((node){y,z});
	}
	memset(dist,0x7f,sizeof(dist));
	dij(kai);
	for(int i=1;i<=n;i++)
	{
		cout<<dist[i]<<" ";
	}
}
2021/4/10 15:41
加载中...