Cod sursa(job #1712077)

Utilizator Athena99Anghel Anca Athena99 Data 1 iunie 2016 22:36:43
Problema Reconst Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <fstream>
#include <queue>
#include <vector>

using namespace std;

ifstream fin("reconst.in");
ofstream fout("reconst.out");

const int nmax= 2000;

struct str {
    int x, y;
};

int d[nmax+1];
bool u[nmax+1];

queue <int> q;
vector <str> v[nmax+1];

inline str mp ( int x, int y ) {
    str sol;
    sol.x= x;
    sol.y= y;
    return sol;
}

void bfs( int p ) {
    u[p]= 1;
    for ( q.push(p); (int)q.size()>0; q.pop() ) {
        int x= q.front();
        for ( int i= 0; i<(int)v[x].size(); ++i ) {
            if ( u[v[x][i].x]==0 ) {
                u[v[x][i].x]= 1;
                d[v[x][i].x]= d[x]+v[x][i].y;
                q.push(v[x][i].x);
            }
        }
    }
}

int main(  ) {
    int n, m;
    fin>>n>>m;
    for ( ; m>0; --m ) {
        int a, b, c;
        fin>>a>>b>>c;
        v[a-1].push_back( mp(b, c) );
        v[b].push_back( mp(a-1, -c) );
    }

    for ( int i= 0; i<=n; ++i ) {
        if ( u[i]==0 ) {
            bfs(i);
        }
    }
    for ( int i= 1; i<=n; ++i ) {
        fout<<d[i]-d[i-1]<<" ";
    }
    fout<<"\n";

    return 0;
}