Pagini recente » Cod sursa (job #551172) | Cod sursa (job #2063693) | Cod sursa (job #1373319) | Cod sursa (job #1124224) | Cod sursa (job #3340354)
#include <bits/stdc++.h>
using namespace std;
struct el
{
int x,y,z;
};
el v[15555];
bool ord(const el & a,const el & b)
{
if(a.z<b.z)
{
return true;
}
return false;
}
int pr[15555];
int p(int k)
{
if(pr[k]!=k)
{
pr[k]=p(pr[k]);
}
return pr[k];
}
set <int> s[15555];
int r[15555];
int main()
{
ifstream cin("radiatie.in");
ofstream cout("radiatie.out");
int n,m,q;
cin>>n>>m>>q;
for(int i=1;i<=m;++i)
{
cin>>v[i].x>>v[i].y>>v[i].z;
}
sort(v+1,v+m+1,ord);
for(int i=1;i<=n;++i)
{
pr[i]=i;
}
int x,y;
for(int i=1;i<=q;++i)
{
cin>>x>>y;
s[x].insert(i);
s[y].insert(i);
}
for(int i=1;i<=m;++i)
{
int p1=p(pr[v[i].x]),p2=p(pr[v[i].y]);
if(p1!=p2)
{
if(s[p2].size()<s[p1].size())
{
swap(p1,p2);
}
pr[p1]=p2;
for(auto a:s[p1])
{
if(s[p2].find(a)!=s[p2].end())
{
r[a]=v[i].z;
s[p2].erase(a);
}
else
{
s[p2].insert(a);
}
}
}
}
for(int i=1;i<=q;++i)
{
cout<<r[i]<<"\n";
}
return 0;
}