Cod sursa(job #2960829)

Utilizator velciu_ilincavelciu ilinca velciu_ilinca Data 5 ianuarie 2023 00:07:18
Problema Radiatie Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.91 kb
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("radiatie.in");
ofstream out("radiatie.out");

int n,m,k;
int rang[15001];

struct father
{
    int tataa;
    int muchie;
};
father tata[15001];

struct elem
{
    int st;
    int dr;
    int price;
};
elem v[15005];

bool cmp(elem x,elem y)
{
    return x.price<y.price;
}

int find1(int x)
{
    int reprez=x;
    int maxi=0;
    while(tata[reprez].tataa!=reprez)
    {
        reprez=tata[reprez].tataa;
    }
    int baza=x;
    while(tata[x].tataa!=x)
    {
        int cpt=tata[x].tataa;
        if(maxi<tata[x].muchie)
            maxi=tata[x].muchie;
        tata[x].tataa=reprez;
        x=cpt;
    }
    tata[baza].muchie=maxi;
    return reprez;
}

void union1(int reprez1,int reprez2,int price)
{
    if(rang[reprez1]==rang[reprez2])
    {
        tata[reprez2].tataa=reprez1;
        rang[reprez1]++;
        tata[reprez2].muchie=price;
    }
    else if(rang[reprez1]<rang[reprez2])
    {
        tata[reprez1].tataa=reprez2;
        tata[reprez1].muchie=price;
    }
    else if(rang[reprez1]>rang[reprez2])
    {
        tata[reprez2].tataa=reprez1;
        tata[reprez2].muchie=price;
    }

}
int main()
{
    in>>n>>m>>k;
    int reprezfinal;
    for(int i=1;i<=n;i++)
    {
        tata[i].muchie=0;
        tata[i].tataa=i;
        rang[i]=1;
    }

    for(int i=1;i<=m;i++)
        in>>v[i].st>>v[i].dr>>v[i].price;

    sort(v+1,v+m+1,cmp);

    for(int i=1;i<=m;i++)
    {
        if(find1(v[i].st)!=find1(v[i].dr))
        {
            int nr1=find1(v[i].st);
            int nr2=find1(v[i].dr);
            union1(nr1,nr2,v[i].price);
        }
    }
    for(int i=1;i<=n;i++)
        reprezfinal=find1(i);
    for(int i=1;i<=k;i++)
    {
        int x,y;
        in>>x>>y;
        out<<max(tata[x].muchie,tata[y].muchie)<<'\n';
    }
    return 0;
}