Cod sursa(job #2010530)

Utilizator tifui.alexandruTifui Ioan Alexandru tifui.alexandru Data 13 august 2017 14:59:01
Problema Distante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <bits/stdc++.h>
#define Nmax 50001
#define tip pair <int,int>
using namespace std;
ifstream f("distante.in");
ofstream g("distante.out");
list <tip> G[Nmax];
int d[Nmax];
int main()
{
    int n,m,T,i,j,k,s,c;
    f>>T;
    list <tip> :: iterator it;
    bool ok;
    bool ok1;
    for(;T;T--)
    {
        f>>n>>m>>s;
        ok1=true;
        for(i=1;i<=n;i++)
        {
            f>>d[i];
            G[i].clear();
        }
        if(d[s]) g<<"NU\n";
        else
        {
            for(k=1;k<=n;k++)
            {
                f>>i>>j>>c;
                G[i].push_back({j,c});
                G[j].push_back({i,c});
            }
            for(i=1;i<=n;i++)
                if(i!=s)
                {
                    ok=false;
                    for(it=G[i].begin();it!=G[i].end();it++)
                        if(d[i]==d[it->first]+it->second)
                        {
                            ok=true;
                            it=G[i].end();
                            --it;
                        }
                    if(!ok) {g<<"NU"; i=n+1; ok1=false;}
                }
             if(ok1) g<<"DA\n";
        }
    }

    return 0;
}