比赛 中秋节快乐! 评测结果 WWWWWWEEEEEEEEEEEEEE
题目名称 货车运输 最终得分 0
用户昵称 李奇文 运行时间 3.852 s
代码语言 C++ 内存使用 3.84 MiB
提交时间 2024-09-17 11:42:17
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
struct treee{
    int f,t,w,nxt;
}e[50005];
int n,m,tot=1,head[50005],q,vis[10005],p[10005];
void adde(int x,int y,int z){
    e[tot].f=x;e[tot].t=y;e[tot].w=z;e[tot].nxt=head[x];head[x]=tot;tot++;
}
int find(int x){
    return p[x]=(p[x]==x?p[x]:find(p[x]));
}
void join(int a,int b){
    int o=find(a),r=find(b);
    if(o!=r){
        p[o]=r;
    } 
}
int dfs(int a,int b,int s){
    if(a==b){
        return s;
    }
    int maxn=0;
    for(int i=head[a];i;i=e[i].nxt){
        int to=e[i].t;
        if(vis[to]) continue;
        vis[to]=1;
        maxn=max(maxn,dfs(to,b,min(s,e[i].w)));
    }
    return maxn;
}

int main(){
    freopen("truck.in","r",stdin);
    freopen("truck.out","w",stdout);
    std::cin>>n>>m;
    for(int i=1;i<=m;i++){
        int x,y,z;
        std::cin>>x>>y>>z;
        join(x,y);
        adde(x,y,z);
        adde(y,x,z);
    }
    std::cin>>q;
    for(int i=1;i<=q;i++){
        int x,y;
        std::cin>>x>>y;
        memset(vis,0,sizeof(vis));
        vis[x]=1;
        if(find(x)!=find(y)){
            std::cout<<-1<<endl;
        }else{
            int u=dfs(x,y,100005);
            if(u){
                std::cout<<u<<endl;
            }else{
                cout<<-1<<endl;
            }
        }
    }
    return 0;
}