Pagini recente » Cod sursa (job #1914385) | Cod sursa (job #2376163) | Cod sursa (job #1550971) | Cod sursa (job #2798245) | Cod sursa (job #407356)
Cod sursa(job #407356)
#include<stdio.h>
#include<ctype.h>
#include<vector>
#include<queue>
using namespace std;
#define mp make_pair
#define fs first
#define sc second
#define pb push_back
#define dim 50050
#define inf 0x3f3f3f3f
queue <int> q;
vector <pair<int,int> > v[dim];
int n,m,dst [ dim ];
inline void add(int &x,int &y, int &c)
{
v[x].pb(mp(y,c));
}
inline void read()
{
int x,y,c;
scanf("%d%d",&n,&m);
for(int i=1; i<=m; i++)
{
scanf("%d%d%d",&x,&y,&c);
add( x, y ,c);
}
}
void solve()
{
int nod;
memset ( dst , inf, sizeof(dst));
dst[ 1 ]=0;
for( q.push (1) ; !q.empty(); q.pop() )
{
nod = q.front ();
for(int i= 0 ; i< v[nod].size(); i ++)
{
// printf("%d %d\n",nod ,dst [ nod ]);
// printf("%d= %d+ %d\n",dst[ v[nod][i].fs ], v[ nod ][ i ].sc , dst[ nod ]);
if ( dst[ v[nod][i].fs ]> v[ nod ][ i ].sc + dst[ nod ])
{
dst[ v[nod][i].fs ] = v[ nod ][ i ].sc + dst[ nod ];
q.push(v[ nod ][ i ].fs) ;
}
}
}
for(int i=2 ;i<=n;i++)
if ( dst[i] != inf)
printf("%d ",dst[i]);
else
printf("0 ");
printf("\n");
}
int main ()
{
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
read();
solve();
return 0;
}