Cod sursa(job #825559)

Utilizator cosminvdpruna stefan cosminvd Data 29 noiembrie 2012 10:54:29
Problema Distante Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<fstream>
#include<vector>
#include<queue>
#define mp make_pair
#define INF 0x3f3f3f
using namespace std;
ifstream f("distante.in");
ofstream g("distante.out");
int n,m,T,s,d[100];
vector<int> dist;
vector<pair<int,int > > G[100];
queue<int> q;
void  citire();
int main()
{
    citire();
    return 0;
}
void citire()
{
    f>>T;

    while(T)
    {
         f>>n>>m>>s;
        for(int k=1;k<=n;k++)
        f>>d[k];
    for(int x,y,c;m;--m)
    {
        f>>x>>y>>c;
        G[x].push_back(mp(y,c));
    }
    int k,i;
    dist.resize(n+1,INF);
    dist[s]=0;
    q.push(s);
    while(!q.empty())
    {
        k=q.front();
        for(i=0;i<G[k].size();i++)
        if(dist[G[k][i].first]>dist[k]+G[k][i].second)
        {
          dist[G[k][i].first]=dist[k]+G[k][i].second;
          q.push(G[k][i].first) ;
        }
        q.pop();
    }
     int gasit;
    for(i=1;i<=n;i++)
    if(dist[i]!=d[i])
    gasit=1;
   if(gasit==1)
   g<<"NU\n";
   else
   g<<"DA\n";
     T--;
    }

}