比赛 |
中秋节快乐! |
评测结果 |
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;
}