用vector存图的话要如何判重
查看原帖
用vector存图的话要如何判重
742157
ZYK_luogu楼主2023/8/7 16:01

本人用邻接矩阵TLE了,想用vector存图但不知道要怎么判重

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
using namespace std;
const int N = 10005;
int n, m, s, u, v, w;
int g[N][N], dist[N], vis[N];
void dijkstra() {
	memset(dist, 0x3f, sizeof dist);
	dist[s] = 0;
	for(int i = 0; i < n; i ++) {
		int k = -1;
		for(int j = 1; j <= n; j ++)
			if(!vis[j] && (k == -1 || dist[k] > dist[j]))
				k = j;
		vis[k] = 1;
		for(int j = 1; j <= n; j ++)
			dist[j] = min(dist[j], dist[k] + g[k][j]);
	}
}
int main() {
	scanf("%d%d%d", &n, &m, &s);
	memset(g, 0x3f, sizeof g);
	for(int i = 1; i <= m; i ++) {
		scanf("%d%d%d", &u, &v, &w);
		g[u][v] = min(g[u][v], w);
	}
	dijkstra();
	for(int i = 1; i <= n; i ++) 
		printf("%d ", dist[i]);
	return 0;
}
2023/8/7 16:01
加载中...