Pagini recente » Cod sursa (job #1283841) | Cod sursa (job #1156074) | Cod sursa (job #1281621) | Cod sursa (job #2384248) | Cod sursa (job #1711876)
#include <cstdio>
#include<vector>
#include<queue>
#include<cstring>
#define inf 2147483647
using namespace std;
int i,x,y,z,n,m;
int dmin[50003];
vector<int>graf[50003];
vector<int>costuri[50003];
void dij(int s)
{
queue<int>c;
int sz,x2,x1,cost;
// memset(dmin,2147483646,sizeof(dmin));
for(i=1;i<=n;i++)
dmin[i]=inf;
dmin[s]=0;
c.push(s);
while(!c.empty())
{
x1=c.front();
c.pop();
sz=graf[x1].size();
for(int j=0;j<sz;j++)
{
x2=graf[x1][j];
cost=costuri[x1][j];
if(dmin[x2]>dmin[x1]+cost)
{
dmin[x2]=dmin[x1]+cost;
c.push(x2);
}
}
}
}
int main()
{
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&z);
graf[x].push_back(y);
costuri[x].push_back(z);
}
dij(1);
for(i=1;i<=n;i++)
{
if(dmin[i]==inf)printf("0 ");
else printf("%d ",dmin[i]);
}
return 0;
}