Pagini recente » Clasament preoni11 | Cod sursa (job #55625) | Cod sursa (job #2464719) | Cod sursa (job #38691) | Cod sursa (job #705009)
Cod sursa(job #705009)
#include<stdio.h>
#include<vector>
using namespace std;
int n,m,i,j,d[200002],x,y,z,c[200002],ok[200002],nr;
vector <int>cost[200002],a[200002];
void dijkstra();
int main()
{
freopen("dijkstra.in","r",stdin);
freopen("dijkstra.out","w",stdout);
scanf("%d %d",&n,&m);
for(;m;m--)
{
scanf("%d %d %d",&x,&y,&z);
a[x].push_back(y);
a[y].push_back(x);
cost[x].push_back(z);
cost[y].push_back(z);
}
dijkstra();
for(i=2;i<=n;i++)
printf("%d ",d[i]);
return 0;
}
void dijkstra()
{
ok[1]=1;
c[0]=1;
c[1]=1;
for(i=1;i<=c[0];i++)
{
nr=a[c[i]].size();
for(j=0;j<nr;j++)
if(!ok[a[c[i]][j]]||d[a[c[i]][j]]>d[c[i]]+cost[c[i]][j])
{
d[a[c[i]][j]]=d[c[i]]+cost[c[i]][j];
if(!ok[a[c[i]][j]])
{
ok[a[c[i]][j]]=1;
c[0]++;
c[c[0]]=a[c[i]][j];
}
}
}
}