Cod sursa(job #1146801)

Utilizator Claudiu95Vartolomei Alexandru Claudiu Claudiu95 Data 19 martie 2014 11:53:58
Problema Distante Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<fstream>
#define maxn 50001
#define maxm 100001
using namespace std;
ifstream f("distante.in");
ofstream g("distante.out");
int t,n,ok,check[maxn],dist[maxn],e1,e2,cost,nod,m;
int main(){
    f>>t;
    for(int i=1;i<=t;++i){

        f>>n>>m>>nod;
        for(int j=1;j<=n;++j){
            check[i]=0;
            f>>dist[j];
        }
        check[nod]=1;
        ok=dist[nod]==0;
        for(int i=1;i<=m;++i){
            f>>e1>>e2>>cost;
            if(dist[e1]+cost < dist[e2] || dist[e2]+cost<dist[e1])
                ok=0;
            if(check[e1]==0 && (dist[e1]==dist[e2]+cost))
                check[e1]=1;
            if(check[e2]==0 && (dist[e2]==dist[e1]+cost))
                check[e2]=1;
        }

        for(int i=1;i<=n && ok ;++i)
            if(check[i]==0)
                ok=0;
        if(ok)
        g<<"DA\n";
        else
        g<<"NU\n";
    }
    return 0;
}