Pagini recente » Cod sursa (job #1783098) | Cod sursa (job #1917946) | Cod sursa (job #2310428) | Cod sursa (job #2895237) | Cod sursa (job #2135021)
#include<fstream>
#include<algorithm>
#define x first
#define y second
#define DM 30005
#define DN 15005
using namespace std;
ifstream fin("radiatie.in");
ofstream fout("radiatie.out");
int n,m,k,f,g,c,t,pr[DN],l,p1,p2,rez[DN];
pair<int,pair<int,int> >a[DM];
pair<pair<int,int>,pair<int,int> >r[DN];
int getpr(int nod)
{
if(pr[nod]==nod)
return pr[nod];
pr[nod]=getpr(pr[nod]);
return pr[nod];
}
int main()
{
fin>>n>>m>>k;
for(int i=1;i<=m;i++)
fin>>a[i].y.x>>a[i].y.y>>a[i].x;
for(int i=1;i<=k;i++)
{
r[i].x.y=i;
fin>>r[i].y.x>>r[i].y.y;
}
sort(a+1,a+m+1);
for(int h=15;h>=0;h--)
{
l=0;
for(int i=1;i<=n;i++)
pr[i]=i;
sort(r+1,r+k+1);
for(int i=1;i<=k;i++)
{
t=r[i].x.x+(1<<h);
if(t>m)
continue;
for(int j=l+1;j<=t;j++)
{
f=a[j].y.x;
g=a[j].y.y;
p1=getpr(f);
p2=getpr(g);
if(p1!=p2)
pr[p1]=p2;
}
p1=getpr(r[i].y.x);
p2=getpr(r[i].y.y);
if(p1!=p2)
r[i].x.x+=(1<<h);
l=t;
}
}
for(int i=1;i<=k;i++)
rez[r[i].x.y]=a[r[i].x.x+1].x;
for(int i=1;i<=k;i++)
fout<<rez[i]<<'\n';
}