Pagini recente » Cod sursa (job #2070622) | Cod sursa (job #2978955) | Cod sursa (job #2217947) | Cod sursa (job #1090283) | Cod sursa (job #1936946)
# include<cstdio>
# include<vector>
# include<queue>
using namespace std;
typedef pair<int,int> ii;
typedef vector <int> vi;
typedef vector<ii> vii;
const int INF=1000000000;
const int NMAX=50005;
vector<ii> G[NMAX+5];
int main ()
{
freopen ("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
int n,m,s,u,v,w,i;
scanf("%d%d",&n,&m);
s=1;
for(int i=1; i<=m; i++)
{
scanf("%d%d%d",&u,&v,&w);
G[u].push_back(ii(v,w));
}
vi dist(NMAX,INF);
dist[s]=0;
priority_queue<ii,vector<ii>,greater<ii>> pq;
pq.push(ii(0,s));
while(!pq.empty())
{
ii front=pq.top();
pq.pop();
int d=front.first;
u=front.second;
if(d>dist[u])
continue;
for(int j=0; j<(int)G[u].size(); j++)
{
int v=G[u][j].first,duv=G[u][j].second;
if(dist[u]+duv<dist[v])
{
dist[v]=dist[u]+duv;
pq.push(ii(dist[v],v));
}
}
}
for(i=1; i<=n; i++)
{
if(i==s) i++;
printf("%d ",dist[i]);
}
return 0;
}