ACWING 854. Floyd求最短路(Floyd)未确认

#include<iostream>
#include<cstring>
using namespace std;

const int N=210;
const int INF=0x3f3f3f3f;

int n,m,q;
int d[N][N];

void floyd() {
    for(int k=1; k<=n; k++) {
        for(int i=1; i<=n; i++) {
            for(int j=1; j<=n; j++) {
                d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
            }
        }
    }
}


int main() {

    cin>>n>>m>>q;
    for(int i=1; i<=n; i++) {
        for(int j=1; j<=n; j++) {
            if(i==j) d[i][j]=0;
            else d[i][j]=INF;
        }

    }
    for(int i=0; i<m; i++) {
        int a,b,c;
        cin>>a>>b>>c;
        d[a][b]=c;
    }

    floyd();

    for(int i=0; i<q; i++) {
        int a, b;
        cin>>a>>b;
        if(d[a][b]>=INF/2) cout<<"impossible\n";
        else cout<<d[a][b]<<endl;
    }

    return 0;
}

/*

3 3 2
1 2 1
2 3 2
1 3 1
2 1
1 3


*/

上一篇:NOIP模拟11


下一篇:GMOJ 6683. 我图呢 题解