本人用邻接矩阵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;
}