Pagini recente » Cod sursa (job #2901281) | Cod sursa (job #1841528) | Cod sursa (job #1849022) | Cod sursa (job #668970) | Cod sursa (job #1527507)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream f("radiatie.in");
ofstream g("radiatie.out");
int t[15001],i,n,l[15001],m,k,a,b,C[15001],X,Y,rez;
vector <int> G[30001];
struct du{
int x,y,c;}v[15001],d,e;
bool cmp(du d, du e)
{
return d.c<e.c;
}
int root(int k)
{
while(t[k]!=0)
k=t[k];
return k;
}
void dfs(int nod)
{
for(size_t i=0;i<G[nod].size();++i)
{
l[G[nod][i]]=l[nod]+1;
dfs(G[nod][i]);
}}
int main()
{
f>>n>>m>>k;
for(i=1;i<=m;i++){
f>>v[i].x>>v[i].y>>v[i].c;
}
sort(v+1,v+n+1,cmp);
for(i=1;i<=m;++i)
{
a=root(v[i].x);
b=root(v[i].y);
if(a!=b)
{
t[a]=b;
G[b].push_back(a);
C[a]=v[i].c;
}
}
for(i=1;t[i];++i);
dfs(i);
while(k!=0)
{
f>>X>>Y;
rez=0;
if(l[X]<l[Y])
swap(X,Y);
while(l[X]>l[Y])
{
rez=max(rez,C[X]);
X=t[X];
}
while(X!=Y)
{
rez=max(rez,max(C[X],C[Y]));
X=t[X];
Y=t[Y];
}
g<<rez<<'\n';
k--;
}
return 0;
}