Cod sursa(job #1560395)

Utilizator sicsicFMI-Coteanu Vlad sicsic Data 2 ianuarie 2016 17:27:39
Problema Radiatie Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.43 kb
#include<fstream>
#include<string.h>
using namespace std;
ifstream f("radiatie.in");
ofstream g("radiatie.out");
int N,M,K,D[15007],U[15007];
struct lista{int nod,cost; lista *leg;} *G[15007];
void adaug(int i,int j,int c)
{
    lista *p;
    p=new lista;
    p->nod=j;
    p->cost=c;
    p->leg=G[i];
    G[i]=p;
}
void citire()
{
    f>>N>>M>>K;
    int i,j,c;
    while(M--)
    {
        f>>i>>j>>c;
        adaug(i,j,c);
        adaug(j,i,c);
    }
}
void Dyj(int source,int capat)
{
    for(int i=1;i<=N;++i) D[i]=100000007,U[i]=0;
    D[source]=0;
    int ok=1;
    while(ok)
    {
        int mini=100000009,poz=-1;
        for(int i=1;i<=N;++i)
            if(!U[i]&&D[i]<mini) mini=D[i],poz=i;
       // g<<mini<<" *"<<poz<<'\n';
        if(poz==-1) ok=0;
        else
        {
      //  g<<poz<<"DA"<<'\n';
        U[poz]=1;
        lista *p;
        for(p=G[poz];p;p=p->leg)
            {
                int x=max(D[poz],p->cost);
                if(x<D[p->nod])
                {
                    U[p->nod]=0;
                    D[p->nod]=x;
                }
            }
        }
    }
   /* for(int i=1;i<=N;++i) g<<D[i]<<" ";
    g<<'\n';
    for(int i=1;i<=N;++i) g<<U[i]<<" ";
    g<<'\n';*/
    g<<D[capat]<<'\n';
   // g<<'\n';
}
void solve()
{
    int a,b;
    while(K--)
    {
        f>>a>>b;
        Dyj(a,b);
    }
}
int main()
{
    citire();
    solve();
}