Pagini recente » Cod sursa (job #1796085) | Cod sursa (job #3210199) | Cod sursa (job #2366085) | Cod sursa (job #1612070) | Cod sursa (job #3178932)
#include <bits/stdc++.h>
using namespace std;
ifstream f("radiatie.in");
ofstream g("apradiatiem.out");
struct muchie
{
int x,y,c,viz;
} v[400003];
int t[200002],sz[200002],fr[16000],n,m,nr,r;
long long s;
int a[15002][15002],b[15002][15002];
#define inf 1000000002
bool cmp(muchie w,muchie b)
{
return w.c<b.c;
}
void kruskal()
{
for(int i=1; i<=n; i++)
{
t[i]=i;
sz[i]=1;
}
sort (v+1,v+m+1,cmp);
for(int i=1; i<=m; i++)
{
int w=v[i].x,b=v[i].y;
while(w!=t[w])
w=t[w];
while(b!=t[b])
b=t[b];
if(t[w]!=t[b])
{
v[i].viz=1;
if(sz[w]>sz[b])
{
sz[w]+=sz[b];
t[b]=w;
}
else
{
sz[b]+=sz[w];
t[w]=b;
}
}
}
}
void bfs(int nod,int val,int per)
{
fr[nod]=1;
for(int i=1;i<=n;i++)
{
if(fr[i]==0 && a[i][nod]!=0)
{
if(b[i][per]==0)
b[i][per]=max(a[i][nod],val);
bfs(i,max(a[i][nod],val),per);
}
}
}
int main()
{
f>>n>>m>>r;
for(int i=1; i<=m; i++)
f>>v[i].x>>v[i].y>>v[i].c;
kruskal();
for(int i=1; i<=m; i++)
if(v[i].viz==1)
a[v[i].x][v[i].y]=a[v[i].y][v[i].x]=v[i].c;
for(int i=1;i<=n;i++)
{
for(int j=1; j<=n; j++)
fr[j]=0;
bfs(i,0,i);
}
int c,d;
for(int i=1; i<=r; i++)
{
f>>c>>d;
g<<b[c][d]<<'\n';
}
return 0;
}