EOJ 1028 Floyd

Posted taming

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EOJ 1028 Floyd相关的知识,希望对你有一定的参考价值。

#include<bits/stdc++.h>
using namespace std;

const int maxN=110;
const int inf=1e8;
map<string,int> id;
int dis[maxN][maxN];

int main(){
    for(int i=0;i<maxN;i++){
        for(int j=0;j<maxN;j++)dis[i][j]=inf;
        dis[i][i]=0;
    }
    int m,n,d,cnt=0,u,v;
    cin>>m>>n;
    string a,b;
    while(n--){
        cin>>a>>b>>d;
        if(!id.count(a))id[a]=++cnt,u=cnt;
        else u=id[a];
        if(!id.count(b))id[b]=++cnt,v=cnt;
        else v=id[b];
        if(dis[u][v]>d)dis[u][v]=dis[v][u]=d;
    }
    for(int k=1;k<=cnt;k++){
        for(int i=1;i<=cnt;i++){
            for(int j=1;j<=cnt;j++)if(dis[i][j]>dis[i][k]+dis[k][j]){
                dis[i][j]=dis[i][k]+dis[k][j];
            }
        }
    }
    cin>>n;
    while(n--){
        cin>>a>>b;
        if(id.count(a)==1&&id.count(b)==1)cout<<(dis[id[a]][id[b]]<inf?dis[id[a]][id[b]]:-1)<<endl;
        else cout<<-1<<endl;
    }
}

 

以上是关于EOJ 1028 Floyd的主要内容,如果未能解决你的问题,请参考以下文章

EOJ3536 蛇形矩阵---找规律

EOJ_3653. 她的名字 预处理 组合数

EOJ Monthly 2018.2 (Good bye 2017)

拼音魔法-华东师范大学程序设计竞赛-3256-EOJ

EOJ2018.10 月赛

EOJ Monthly 2019.2 E. 中位数 (二分+dfs)