Cod sursa(job #2400649)

Utilizator marian013Giugioiu Marian Constantin marian013 Data 8 aprilie 2019 23:10:31
Problema Distante Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<bits/stdc++.h>
using namespace std;
ifstream f("distante.in");
ofstream g("distante.out");
vector < pair<int,int> > a[50005];
int m,n,s,h=1,t,x,y,c,d[50005],i,j;
string solve()
{
    for(i=1;i<=n;i++)
    {
        if(i==s)
        continue;
        h=0;
        for(j=0;j<a[i].size();j++)
        {
            if(d[a[i][j].first]>d[i]+a[i][j].second)
                return "NU\n";
            if(d[i]==d[a[i][j].first]+a[i][j].second)
                h=1;
        }
        if(h==0)
            return "NU\n";
    }
    return "DA\n";
}
int main()
{
    f>>t;
    while(t--)
    {
        f>>n>>m>>s;
        for(i=1;i<=n;++i)
            f>>d[i];
        for(i=1;i<=m;++i)
        {
            f>>x>>y>>c;
            a[x].push_back(make_pair(y,c));
            a[y].push_back(make_pair(x,c));
        }
        if(d[s])
            g<<"NU\n";
        else
            g<<solve();
        for(i=1;i<=n;i++)
            a[i].clear();
    }

}