Pagini recente » Statistici Calancea Mihaela (mihaelacalancea12345) | Cod sursa (job #895929) | Cod sursa (job #862851) | Cod sursa (job #873821) | Cod sursa (job #488246)
Cod sursa(job #488246)
#include <cstdio>
#include <vector>
#include <set>
using namespace std;
#define nmax 50010
#define inf 1<<30
#define f first
#define s second
vector <pair <int, int> > g[nmax];
set <pair <int, int> > t;
int n, m, d[nmax];
void solve()
{
int i, val, x;
for (i=1; i<=n; i++) d[i]=inf;
t.insert(make_pair(0,1));
while (t.size()>0)
{
val=(*t.begin()).first;
x=(*t.begin()).second;
t.erase(*t.begin());
for (i=0; i<g[x].size(); i++)
if (val+g[x][i].s<d[g[x][i].f])
{
d[g[x][i].f]=val+g[x][i].s;
t.insert(make_pair(d[g[x][i].f], g[x][i].f));
}
}
}
int main()
{
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
scanf("%d %d",&n,&m);
int i, x, y, c;
while (m--)
{
scanf("%d %d %d",&x,&y,&c);
g[x].push_back (make_pair(y,c));
}
solve();
for (i=2; i<=n; i++)
if (d[i]==inf) printf("0 "); else
printf("%d ",d[i]);
}