Pagini recente » Cod sursa (job #2436291) | Cod sursa (job #273423) | Cod sursa (job #592758) | Cod sursa (job #3177348) | Cod sursa (job #2101388)
#include<fstream>
#include<algorithm>
using namespace std;
int n,m,i,aux,s[15005],p,k,K,x,y,viz[15005];
struct muchie
{
int x,y,c;
};
muchie v[30005],sol[30005];
struct nod
{
int x,c;
nod *urm;
};
nod *gr[15005],*q;
struct coada
{
int x,d;
};
coada c[15005];
ifstream f("radiatie.in");
ofstream g("radiatie.out");
bool cmp(muchie a,muchie b)
{
if(a.c<b.c) return 1;
if(a.c==b.c && a.x<b.x) return 1;
if(a.c==b.c && a.x==b.x && a.y<b.y) return 1;
return 0;
}
int ok()
{
int i,okk=1;
for(i=1;i<=n;i++)
if(s[i]!=1) okk=0;
return okk;
}
void modif()
{
int i;
for(i=1;i<=n;i++)
{
if(s[i]==s[v[p].y]) s[i]=s[v[p].x];
}
}
void adaug(int x,int y,int c)
{
nod *p=new nod;
p->x=y;
p->c=c;
p->urm=gr[x];
gr[x]=p;
}
int bf(int x,int y)
{
int pr=1,ul=1;
c[1]={x,0};
viz[x]=1;
for(int i=1;i<=n;i++) viz[i]=0;
while(pr<=ul)
{
coada p=c[pr];
for(q=gr[p.x];q!=NULL;q=q->urm)
{
if(viz[q->x]==0)
{
viz[q->x]=1;
c[++ul]={q->x,max(p.d,q->c)};
if(q->x==y)
{
return c[ul].d;
}
}
}
pr++;
}
return 0;
}
int main()
{
f>>n>>m>>K;
for(i=1;i<=m;i++)
{
f>>v[i].x>>v[i].y>>v[i].c;
if(v[i].x>v[i].y)
{
aux=v[i].x;
v[i].x=v[i].y;
v[i].y=aux;
}
}
sort(v+1,v+m+1,cmp);
for(i=1;i<=n;i++)
s[i]=i;
p=1;
k=0;
while(ok()==0)
{
if(s[v[p].x]!=s[v[p].y])
{
aux=s[v[p].y];
for(i=1;i<=n;i++)
{
if(s[i]==aux) s[i]=s[v[p].x];
}
adaug(v[p].x,v[p].y,v[p].c);
adaug(v[p].y,v[p].x,v[p].c);
}
p++;
}
for(i=1;i<=K;i++)
{
f>>x>>y;
g<<bf(x,y)<<"\n";
}
f.close();
g.close();
return 0;
}