Pagini recente » Cod sursa (job #2061510) | Cod sursa (job #1379458) | Cod sursa (job #808409) | Cod sursa (job #1690349) | Cod sursa (job #928029)
Cod sursa(job #928029)
#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;
int i,j,n,m,niv[15001],tata[15001],x,y,cost1,k;
unsigned long max1,c[15001];
bool viz[15001];
struct muchii
{
int nod;
unsigned long cost;
};
vector<muchii> a[15001];
void df(int x)
{
int i;
viz[x]=1;
for(i=0;i<a[x].size();++i)
if(!viz[a[x][i].nod])
{
tata[a[x][i].nod]=x;
niv[a[x][i].nod]=niv[x]+1;
c[a[x][i].nod]=a[x][i].cost;
df(a[x][i].nod);
}
}
int main()
{
ifstream f("radiatie.in");
ofstream g("radiatie.out");
f>>n>>m>>k;
for(i=1;i<=m;++i)
{
f>>x>>y>>cost1;
a[x].push_back((muchii) {y,cost1});
a[y].push_back((muchii) {x,cost1});
}
df(1);
for(i=1;i<=k;++i)
{
f>>x>>y;
max1=0;
while(niv[x]>niv[y])
{
max1=max(c[x],max1);
x=tata[x];
}
while(niv[y]>niv[x])
{
max1=max(c[y],max1);
y=tata[y];
}
while(x!=y)
{
max1=max(max1,max(c[x],c[y]));
x=tata[x];
y=tata[y];
}
g<<max1<<"\n";
}
return 0;
}