Pagini recente » Cod sursa (job #1095645) | Cod sursa (job #988510) | Cod sursa (job #1400203) | Cod sursa (job #2566311) | Cod sursa (job #3279130)
#include<bits/stdc++.h>
using namespace std;
ifstream in("radiatie.in");
ofstream out("radiatie.out");
const int MAX_NUM=15100;
int n,m,k,parent[MAX_NUM];
pair<int,pair<int,int>> cost[MAX_NUM];
pair<int,int> queries[MAX_NUM];
int answer[MAX_NUM];
int find(int i)
{
if(parent[i]!=i)
parent[i]=find(parent[i]);
return parent[i];
}
void unify(int i,int j)
{
if(rand()&1)
parent[find(j)]=find(i);
else
parent[find(i)]=find(j);
}
int main()
{
in>>n>>m>>k;
for(int i=0;i<m;i++)
{
int a,b,c;
in>>a>>b>>c;
cost[i]={c,{a,b}};
}
sort(cost,cost+m);
for(int i=1;i<=n;i++)
parent[i]=i;
for(int i=0;i<k;i++)
in>>queries[i].first>>queries[i].second;
for(int i=0;i<m;i++)
{
int x=cost[i].second.first,y=cost[i].second.second,c=cost[i].first;
int findX=find(x),findY=find(y);
if(findX!=findY)
{
for(int j=0;j<k;j++)
{
int x1=queries[j].first,y1=queries[j].second;
int findX1=find(x1),findY1=find(y1);
if((findX1==findX&&findY1==findY)||(findX1==findY&&findY1==findX))
answer[j]=c;
}
unify(x,y);
}
}
for(int i=0;i<k;i++)
out<<answer[i]<<"\n";
return 0;
}