Pagini recente » Cod sursa (job #2054621) | Cod sursa (job #2375800) | Cod sursa (job #2755151) | Cod sursa (job #588397) | Cod sursa (job #2148651)
#include <fstream>
#include <algorithm>
#include <vector>
#include <cstring>
using namespace std;
ifstream f ("radiatie.in");
ofstream g ("radiatie.out");
const int nmax=3e4+3;
vector <int> v[nmax];
vector <int> c[nmax];
int n,m,k,a,b,sol,GR[nmax],act;
struct usu
{
int a,b,c;
}mu[nmax];
bool viz[nmax];
void dfs(int nod,int act)
{
viz[nod]=1;
if(nod==b) sol=act;
for(int i=0;i<v[nod].size();++i)
{
if(viz[v[nod][i]]) continue;
dfs(v[nod][i],max(act,c[nod][i]));
}
}
inline bool cmp(const usu &t1,const usu &t2)
{
return t1.c<t2.c;
}
inline int gr(int nod)
{
if(GR[nod]==nod) return nod;
GR[nod]=gr(GR[nod]);
return GR[nod];
}
int main()
{
f>>n>>m>>k;
for(int i=1;i<=m;++i) f>>mu[i].a>>mu[i].b>>mu[i].c;
sort(mu+1,mu+m+1,cmp);
for(int i=1;i<=n;++i) GR[i]=i;
for(int i=1;i<=m&&act<n-1;++i)
{
if(gr(mu[i].a)!=gr(mu[i].b))
{
++act;
v[mu[i].a].push_back(mu[i].b);
c[mu[i].a].push_back(mu[i].c);
v[mu[i].b].push_back(mu[i].a);
c[mu[i].b].push_back(mu[i].c);
GR[gr(mu[i].a)]=gr(mu[i].b);
}
}
while(k--)
{
f>>a>>b;
memset(viz,0,sizeof(viz));
sol=0;
dfs(a,0);
g<<sol<<'\n';
}
return 0;
}