Cod sursa(job #928029)

Utilizator lily3Moldovan Liliana lily3 Data 26 martie 2013 10:49:31
Problema Radiatie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.22 kb
#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;
}