Pagini recente » Cod sursa (job #1288632) | Cod sursa (job #177152) | Cod sursa (job #2375488) | Cod sursa (job #2899383) | Cod sursa (job #1001224)
#include<stdio.h>
#include<algorithm>
#define maxn 15005
#define maxm 30005
using namespace std;
struct edg{int x,y,c;} a[maxm];
int n,m,K;
int father[maxn],h[maxn],cst[maxn];
void read()
{
scanf("%d%d%d",&n,&m,&K);
for(int i=1;i<=m;i++)
scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].c);
}
int search(int k)
{
if(father[k]==k) return k;
return search(father[k]);
}
bool cmp(const edg &a,const edg &b){
return a.c<b.c;
}
void kruskal()
{
int rx,ry;
sort(a+1,a+m+1,cmp);
for(int i=1;i<=n;i++) father[i]=i,h[i]=1;
for(int i=1;i<=m;i++)
{
rx=search(a[i].x); ry=search(a[i].y);
if(rx!=ry)
{
if(h[rx]<=h[ry])
{
father[rx]=ry;
cst[rx]=a[i].c;
h[ry]+=h[rx];
}
else
{
father[ry]=rx;
cst[ry]=a[i].c;
h[rx]+=h[ry];
}
}
}
}
void solve()
{
int x,y,sol=0,k;
for(int i=1;i<=K;i++)
{
scanf("%d%d",&x,&y); sol=0;
for(k=x;father[k]!=k;k=father[k]) sol=max(sol,cst[k]);
for(k=y;father[k]!=k;k=father[k]) sol=max(sol,cst[k]);
printf("%d\n",sol);
}
}
int main()
{
freopen("radiatie.in","r",stdin);
freopen("radiatie.out","w",stdout);
read();
kruskal();
solve();
fclose(stdin);
fclose(stdout);
return 0;
}