最短路径Floyd

    xiaoxiao2021-03-25  95

    #include<bits/stdc++.h> using namespace std; int arr[1001][1001]; int main(){ long long num; long long val,temp1,temp2,temp3; while(scanf("%lld",&num)!=EOF&&num!=0){ scanf("%lld",&val); for(int i=0;i<=num;i++) for(int j=0;j<=num;j++) arr[i][j]=INT_MAX; for(int i=0;i<val;i++){ scanf("%lld%lld%lld",&temp1,&temp2,&temp3); arr[temp1][temp2]=temp3; arr[temp2][temp1]=temp3; } /*************核心部分**********************/ for(int k=1;k<=num;k++) for(int i=1;i<=num;i++) for(int j=1;j<=num;j++){ // cout<<arr[i][k]<<' '<<arr[k][j]<<' '<<arr[i][j]<<endl; if(arr[i][k]==INT_MAX||arr[k][j]==INT_MAX) continue; if(arr[i][j]==INT_MAX||arr[i][k]+arr[k][j]<arr[i][j]) arr[i][j]=arr[i][k]+arr[k][j]; } cout<<arr[1][num]<<endl; } return 0; }

    1447

    转载请注明原文地址: https://ju.6miu.com/read-19565.html

    最新回复(0)