• 洛谷 P1078 文化之旅


    题目链接-> 

    题解:         

    #include <cstdio>
    #include <cstring>
    #include <iostream>
    using namespace std;
    int u,v,w,n,k,m,s,t,f[110][110],dis[10],vis[110][110];
    bool flag[110][110][110];
    inline int read(){
        int X=0,w=0; char ch=0;
        while(!isdigit(ch)) {w|=ch=='-';ch=getchar();}
        while(isdigit(ch)) X=(X<<3)+(X<<1)+(ch^48),ch=getchar();
        return w?-X:X;
    }
    inline void write(int x){
         if(x<0) putchar('-'),x=-x;
         if(x>9) write(x/10);
         putchar(x%10+'0');
    }
    int main(int argc, char const *argv[]){
        memset(f,0x3f,sizeof(f));
        n=read(),k=read(),m=read(),s=read(),t=read();
        for (int i = 1; i <= n; ++i){
            dis[i]=read();
            f[i][i]=0;
        }
        for (int i = 1; i <= k; ++i){
            for (int j = 1; j <= k; ++j){
                vis[i][j]=read();
            }
        }
        for (int i = 1; i <= m; ++i){
            u=read(),v=read(),w=read();
            if (!vis[dis[v]][dis[u]]&&dis[u]!=dis[v]){
                f[u][v]=min(w,f[u][v]);
            }
            if (!vis[dis[u]][dis[v]]&&dis[u]!=dis[v]){
                f[v][u]=min(w,f[v][u]);
            }
        }
        for(int i=1;i<=n;i++){
            for(int j=1;j<=n;j++){
                flag[i][j][dis[i]]=flag[i][j][dis[j]]=1;
            }
        }
        for(int k=1;k<=n;k++){
            for(int i=1;i<=n;++i){
                for(int j=1;j<=n;j++){
                    if(!vis[dis[k]][dis[i]]&&!vis[dis[j]][dis[k]]&&!flag[i][k][dis[j]]&&!flag[k][j][dis[i]]&&f[i][k]+f[k][j]<f[i][j]){
                        for(int t=1;t<=n;t++){
                            flag[i][j][t]=flag[i][k][t]||flag[k][j][t];
                        }
                        flag[i][j][dis[k]]=1;
                        f[i][j]=f[i][k]+f[k][j];
                    }
                }
            }
        }
        if(f[s][t]==0x3f3f3f3f) printf("-1
    ");
        else printf("%d
    ",f[s][t]);
        return 0;
    }

    一世安宁

  • 相关阅读:
    Shiro加密
    SpringBoot操作MongoDB实现增删改查
    ArrayList 源码分析(JDK1.8)
    Java 内存泄漏
    Java 原型模式(克隆模式)
    3.2-3.3 Hive中常见的数据压缩
    7、html的body内标签之图片及表格
    6、html的body内标签之超链接
    5、html的body内标签之多行文本及下拉框
    3.1 HiveServer2.Beeline JDBC使用
  • 原文地址:https://www.cnblogs.com/GTBA/p/9709425.html
Copyright © 2020-2023  润新知