Pagini recente » Cod sursa (job #398417) | Cod sursa (job #1489530) | Cod sursa (job #2550306) | Cod sursa (job #2590680) | Cod sursa (job #2021301)
#include<bits/stdc++.h>
#define inf INT_MAX
#define maxN 2005
using namespace std;
int n,m,x,y,z,nod,pos,nr,val[maxN];
bool seen[maxN];
deque<int> q;
vector<pair<int,int> > v[maxN];
int main()
{
freopen("reconst.in","r",stdin);
freopen("reconst.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&z);
v[x-1].push_back({y,z});
v[y].push_back({x-1,-z});
}
for(int i=1;i<=n;i++) val[i]=inf;
val[0]=0;
q.push_back(0);
seen[0]=1;
pos=1;
while(nr<n)
{
if(q.empty())
{
while(val[pos]==inf) pos++;
val[pos]=val[pos-1]+500;
nr++;
seen[pos]=1;
q.push_back(pos);
}
nod=q.front();
q.pop_front();
for(vector<pair<int,int> >::iterator it=v[nod].begin();it!=v[nod].end();it++)
{
if(seen[it->first]) continue;
val[it->first]=val[nod]+it->second;
nr++;
q.push_back(it->first);
seen[it->first]=1;
}
}
for(int i=1;i<=n;i++)
printf("%d ",val[i]-val[i-1]);
return 0;
}