社区讨论

裸dijkstra 10pts,求调

P1339[USACO09OCT] Heat Wave G参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lunn6kda
此快照首次捕获于
2024/04/06 13:16
2 年前
此快照最后确认于
2024/04/06 14:59
2 年前
查看原帖
code:
CPP
#include <bits/stdc++.h>
using namespace std;
bool vst[2510], ctd[2510][2510];
int g[2510][2510], dis[2510], n, m, a, b, c, k, now = 2e9, v0, t;
int main()
{
	cin >> n >> m >> v0 >> t;
	k = v0;
	vst[v0] = 1;
	for (int i = 0; i < m; i++)
	{
		cin >> a >> b >> c;
		if (ctd[a][b]) g[a][b] = g[b][a] = min(c, g[a][b]);
		else g[a][b] = g[b][a] = c;
		ctd[a][b] = ctd[b][a] = 1;
	}
	for (int i = 1; i <= n; i++) if (i != v0) dis[i] = 1e9;
	for (int it = 1; it <= n; it++)
	{
		for (int i = 1; i <= n; i++)
		{
			if (ctd[k][i]) dis[i] = min(dis[k] + g[k][i], dis[i]);
		}
		for (int i = 1; i <= n; i++)
		{
			if (not vst[i] and dis[i] < now) k = i, now = dis[i];
		}
		vst[k] = 1;
	}
	cout << dis[t];
	return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...