WA,我应该检查什么地方
查看原帖
WA,我应该检查什么地方
1034235
Chlero楼主2023/10/25 20:30

WA on #1#2#3#4#6

#include <bits/stdc++.h>
using namespace std;
struct node
{
	int to, w;
};
struct pq
{
	int wi, i;
	bool operator<(const pq &b)const
	{
		return b.wi < wi;
	}
};
vector<node> ve[100005];
bitset<100005> vis;
int dis[100005];
void Dijkstra()
{
	priority_queue<pq> qu;
	qu.push(pq{0, 1});
	dis[1] = 0;
	while (qu.size())
	{
		pq now = qu.top();
		qu.pop();

		if (vis[now.i])continue;
		vis[now.i] = 1;

		for (int i = 0; i < (int)ve[now.i].size(); i++)
		{
			int to = ve[now.i][i].to;
			if (dis[to] > dis[now.i] + ve[now.i][i].w)
			{
				dis[to] = dis[now.i] + ve[now.i][i].w;
				qu.push(pq{dis[to], to});
			}
		}
	}
}
int main()
{
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	int n, m, s;
	cin >> n >> m >> s;
	while (m--)
	{
		int u, v, w;
		cin >> u >> v >> w;
		ve[u].push_back(node{v, w});
	}
	fill(dis + 1, dis + n + 1, 1000000005);
	Dijkstra();
	for (int i = 1; i <= n; i++)cout << dis[i] << ' ';
	return 0;
}
2023/10/25 20:30
加载中...