P3371
  • 板块灌水区
  • 楼主S_Z_Xcoco
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/9/30 18:12
  • 上次更新2024/9/30 20:13:39
查看原帖
P3371
918508
S_Z_Xcoco楼主2024/9/30 18:12

样例RE。。。

#include<iostream>
#include<vector>
#include<climits>
using namespace std;
const int INF = INT_MAX;
vector<int>dijkstra(vector<vector<int>>g, int s){
    int n = g.size();
    vector<int>vis(n+10,0);
    vector<int>dist(n+10,0);
    for(int i = 1; i <= n; i++){
        dist[i] = g[s][i];
    }
    vis[s] = 1;
    for(int i = 1; i <= n; i++){
        int min_dist = INF;
        int mid = 1;
        for(int j = 1; j <= n; j++){
            if(vis[j] == 0 && min_dist > dist[j]){
                min_dist = dist[j];
                mid = j;
            }
        }
        for(int j = 1; j <= n; j++){
            if(vis[j] == 0 && dist[j] > dist[mid] + g[mid][j]){
                dist[j] = dist[mid] + g[mid][j];
            }
        }
        vis[mid] = 1;
    }
    return dist;
}
int main(){
    int n, m, s;
    cin >> n >> m >> s;
    vector<vector<int>>g(n+1, vector<int>(n+1, INF));
    for(int i = 1; i <= n; i++){
        g[i][i] = 0;
    }
    for(int i = 1; i <= m; i++){
        int u, v, w;
        cin >> u >> v >> w;
        g[u][v] = w;
    }
    vector<int>dist = dijkstra(g, s);
    for(int i = 1; i <= n; i++){
        cout << dist[i] << ' ';
    }
    return 0;
}
2024/9/30 18:12
加载中...