0分求助,3MLE+7WA,Dijkstra
查看原帖
0分求助,3MLE+7WA,Dijkstra
327288
helpcyg楼主2020/9/20 20:21

代码:

#include<iostream>
#include<vector>
using namespace std;
#define INF 999999
int main(){
    int n,m,start;
    int from,to,length;
    cin>>n>>m>>start;
    vector<vector<int>> matrix(n + 1,vector<int>(n + 1,INF));
    vector<int> dis(n + 1,INF);//距离
    vector<bool> seek(n + 1,false);//标记
    dis[start] = 0;
    seek[start] = true;
    for(int i = 0;i < m;i++){
        cin>>from>>to>>length;
        matrix[from][to] = length;
    }
    while(true){
        int k = 0;
        for(int j = 1;j <= n;j++){
            if(seek[j] == false && dis[j] < dis[k]){
                k = j;
            }
        }
        if(k == 0) break;
        seek[k] = true;
        //松弛操作
        for(int j = 1;j <= n;j++){
            if(seek[j] == false){
                dis[j] = min(dis[j],dis[k] + matrix[k][j]);
            }
        }
    }
    //输出
    for(int j = 1;j <= n;j++){
        cout<<dis[j]<<" ";
    }
    return 0;
}
2020/9/20 20:21
加载中...