Pagini recente » Cod sursa (job #1291716) | Cod sursa (job #1630769) | Cod sursa (job #1302898) | Cod sursa (job #1719294) | Cod sursa (job #491749)
Cod sursa(job #491749)
#include<stdio.h>
#include<queue>
#include<algorithm>
using namespace std;
FILE *f=fopen("radiatie.in","r");
FILE *g=fopen("radiatie.out","w");
int n,m,k,i,r1,r2,t[15001],cm[15001],nrt[15001],myn,p[15001],viz[15001],x,y,nrx,nry,cmax;
struct nod{
int a;
int b;
int c;
} v[30001];
bool cmp(nod a,nod b){
return (a.c < b.c);
}
int max(int l,int r){
if(l>r)
return l;
return r;
}
vector <int> a[15001];
void citire(){
fscanf(f,"%d%d%d",&n,&m,&k);
for(i=1;i<=m;i++)
fscanf(f,"%d%d%d",&v[i].a,&v[i].b,&v[i].c);
}
void apm(){
int i;
for(i=1;i<=n;i++)
t[i]=-1;
int k=0;
i=1;
while(k < n-1){
r1=v[i].a;
r2=v[i].b;
while(t[r1]>0){
r1=t[r1];
}
while(t[r2]>0){
r2=t[r2];
}
if(r1!=r2){
if(t[r1] < t[r2] ){
t[r1]+=t[r2];
t[r2]=r1;
}
else { t[r2]+=t[r1];
t[r1]=r2;
}
k++;
cm[v[i].b]=v[i].c;
p[v[i].b]=v[i].a;
a[v[i].a].push_back(v[i].b);
a[v[i].b].push_back(v[i].a);
}
i++;
}
}
void df(int k){
viz[k]=1;
for(int i=0;i<(int)a[k].size();i++){
if(viz[a[k][i]]==0)
{ nrt[a[k][i]]=nrt[k]+1;
df(a[k][i]);
}
}
}
int main(){
citire();
sort(v+1,v+m+1,cmp);
apm();
nrt[1]=1;
df(1);
for(int i=1;i<=k;i++){
fscanf(f,"%d%d",&x,&y);
cmax=0;
while(nrt[x]>nrt[y]){
if(cm[x]>cmax)
cmax=cm[x];
x=p[x];
}
while(nrt[y]>nrt[x]){
if(cm[y]>cmax)
cmax=cm[y];
y=p[y];
}
while(x!=y){
if(cm[y]>cmax)
cmax=cm[y];
if(cm[x]>cmax)
cmax=cm[x];
x=p[x];
y=p[y];
}
fprintf(g,"%d\n",cmax);
}
return 0;
}