萌新刚学OI,WA第五个点求助
查看原帖
萌新刚学OI,WA第五个点求助
220426
血色黄昏楼主2020/10/8 20:52

Rt,是我哪里开小了吗QAQ

#include<bits/stdc++.h>
using namespace std;
int n, m, u, v, w, s, d[100010];
bool vis[100010];
priority_queue<pair<int, int> >q;
struct node{
	int w, v;
};
vector<node>l[100010];
void insert(int u, int v, int w)
{
	node tmp;
	tmp.w = w;
	tmp.v = v;
	l[u].push_back(tmp);
}
int dij()
{
	memset(d, 2000000010, sizeof(d));
	memset(vis, false, sizeof(vis));
	d[s] = 0;
	q.push(make_pair(0, s));
	while(q.size())
	{
		int x = q.top().second;
		q.pop();
		if(vis[x])continue;
		vis[x] = 1;
		for(int i = 0;i < l[x].size();i ++)
		{
			int y = l[x][i].v, z = l[x][i].w;
			if(d[y] > d[x] + z)
			{
				d[y] = d[x] + z;
				pair<int, int>qwq(-d[y], y);
				q.push(qwq);	
			}
		}
	}
	for(int i = 1;i <= n;i ++)
	{
		cout<<d[i]<<" ";
	}
	return 0;
}
int main()
{
	scanf("%d%d%d", &n, &m, &s);
	for(int i = 0;i < m;i ++)
	{
		scanf("%d%d%d", &u, &v, &w);
		insert(u, v, w);
	}
	dij();
	return 0;
}
2020/10/8 20:52
加载中...