dijkstra90分qwq,求调
查看原帖
dijkstra90分qwq,求调
1003847
xiaomi0107楼主2025/7/29 19:30
#include <bits/stdc++.h>
using namespace std;

typedef pair<int, int> pii;
const int N = 110;
int g[N][N];
int n, m, u[N], v[N];
int l[N][N];
int dis[N], vis[N];
void dijkstra(int s)
{
	priority_queue<pii> pq;
	pq.push({0, s});
	dis[s] = 0;
	while (!pq.empty())
	{
		pii pi = pq.top(); pq.pop();
		int u = pi.second;
		vis[u] = true;
		for (int v = 1; v <= n; v++)
		{
			if (g[u][v] == -1) continue;
			if (vis[v]) continue;
			if (dis[u] + g[u][v] < dis[v])
			{
				dis[v] = dis[u] + g[u][v];
				pq.push({-dis[v], v});
			}
		}
	}
}

int main()
{
	memset(g, -1, sizeof g);
	cin >> n >> m;
	for (int i = 1; i <= m; i++)
	{
		cin >> u[i] >> v[i];
		cin >> l[u[i]][v[i]];
		l[v[i]][u[i]] = l[u[i]][v[i]];
		g[u[i]][v[i]] = 0, g[v[i]][u[i]] = 0;
	}
	int d;
	cin >> d;
	for (int i = 1; i <= d; i++)
	{
		int x, y;
		cin >> x >> y;
		g[x][y] = l[x][y], g[y][x] = l[y][x];
	}
	memset(dis, 0x3f, sizeof dis);
	memset(vis, false, sizeof vis);
	int s, t;
	cin >> s >> t;
	dijkstra(s);
	cout << dis[t] << endl;
	return 0;
}

第九个点WA

2025/7/29 19:30
加载中...