zoukankan      html  css  js  c++  java
  • [题解]洛谷P1119 灾后重建

      链接

      做死我了,,,半夜找题自虐

      floyd算法

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<iostream>
    #define MAXN 210
    #define MAXQ 500010
    using namespace std;
    
    int dis[MAXN][MAXN],n,m,t[MAXN],q;
    int u[MAXQ],v[MAXQ],qwq[MAXQ];
    int b[MAXN]={0};
    
    int read(){
        int x=0,w=1;
        char c=getchar();
        while(c<'0'||c>'9'){
            if(c=='-')w=-1;
            c=getchar();
        }
        while(c>='0'&&c<='9'){
            x=(x<<3)+(x<<1)+c-'0';
            c=getchar();
        }
        return x*w;
    }
    
    int main(){
        //freopen("in.in","r",stdin);
        memset(dis,0x7f7f7f7f,sizeof(dis));
        n=read();m=read();
        for (int i=0; i<n; i++)
            dis[i][i]=0;
        for(int i=0;i<n;i++)
            t[i]=read();
        for(int i=1;i<=m;i++){
            int ua=read(),va=read(),wa=read();
            dis[ua][va]=dis[va][ua]=wa;
        }
        q=read();
        for(int i=1;i<=q;i++){
            u[i]=read();v[i]=read();qwq[i]=read();
        }
        for(int kkk=1;kkk<=q;kkk++){
            for(int k=0;k<n;k++)
                if(t[k]<=qwq[kkk]&&!b[k]){
                    b[k]=1;
                    for(int i=0; i<n; i++)
                        for(int j=0; j<n; j++) 
                            if(dis[i][j]>dis[i][k]+dis[k][j]&&i!=j&&k!=i&&k!=j&&dis[i][k]<0x7f7f7f7f&&dis[k][j]<0x7f7f7f7f)
                                dis[i][j]=dis[i][k]+dis[k][j];
                }
            if(t[u[kkk]]<=qwq[kkk]&&t[v[kkk]]<=qwq[kkk]&&dis[u[kkk]][v[kkk]]!=0x7f7f7f7f)printf("%d
    ",dis[u[kkk]][v[kkk]]);
            else printf("-1
    ");
        }
        return 0;
    }
    本篇文章为SHINE_GEEK原创,转载请注明来源!
    written_by:SHINE_GEEK

    -------------------------------------
    签名:自己选的路,跪着也要走完;理想的实现,需要不懈奋斗!
    -------------------------------------
  • 相关阅读:
    虚方法和抽象方法
    c#_实现FTP方法(一) FtpWebRequest
    sql server 分页
    5ucms进阶
    图片处理函数
    [转]C++11新特性:Lambda函数
    [STL]for_each详细用法[转]
    [算法]hash table 与 hash map 实现
    [算法]字典树
    [STL]vector的使用[转]
  • 原文地址:https://www.cnblogs.com/sjrb/p/10349370.html
Copyright © 2011-2022 走看看