第一次写链式前向星,结果连样例都过不去 输出0 2147483647 2147483647 2147483647
#include <iostream>
using namespace std;
const int INF = 0x7fffffff;
int n, m, u, v, w, mind, now, start, cnt = 1;
int head[100001], dis[100001], vis[100001];
struct Edge{
int next, to, w;
}edge[100001];
void add(int u, int v, int w){
edge[cnt].w = w;
edge[cnt].to = v;
edge[cnt].next = head[u];
head[u] = cnt++;
}
void dijkstra(int start){
for (int i = 1; i <= n; i++){
dis[i] = INF;
head[i] = -1;
vis[i] = 0;
}
dis[start] = 0;
for (int i = 1; i <= n - 1; i++){
mind = INF;
for (int j = 1; j <= n; j++){
if (vis[j] == 0 && dis[j] < mind){
mind = dis[j];
now = j;
}
}
vis[now] = 1;
int b = head[now];
while (b != -1){
int a = edge[b].to;
if (dis[a] > dis[now] + edge[b].w) dis[a] = dis[now] + edge[b].w;
b = edge[b].next;
}
}
}
int main(){
cin >> n >> m >> start;
for (int i = 1; i <= m; i++){
cin >> u >> v >> w;
add(u, v, w);
}
dijkstra(start);
for (int i = 1; i <= n; i++){
cout << dis[i] << " ";
}
return 0;
}