Pagini recente » Cod sursa (job #1694261) | Cod sursa (job #1514963) | Cod sursa (job #503740) | Cod sursa (job #2743691) | Cod sursa (job #1712077)
#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;
}