Cod sursa(job #812633)

Utilizator hellol30FMI Macovei Daniel hellol30 Data 14 noiembrie 2012 09:26:05
Problema Algoritmul lui Dijkstra Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include<cstdio>
#include<vector>
#define INF 0x3f3f3f3f
using namespace std;

int n,m,ok;
int main()
{   freopen("dijkstra.in","rt",stdin);
	freopen("dijkstra.out","wt",stdout);
	scanf("%d%d",&n,&m);
	vector<int> x(m+6,0),y(m+6,0),c(m+6,0);
	vector<int> d(n+6,INF); scanf("%d%d%d",&x[1],&y[1],&c[1]);
    for(register int i=2; i<=m; scanf("%d%d%d",&x[i],&y[i],&c[i]),++i)
        if(x[i]==1) d[y[i]]=c[i];
    
    do  {	ok=0;
			for(register int i=1; i<=m; ++i)
				if(d[y[i]]>d[x[i]]+c[i]) d[y[i]]=d[x[i]]+c[i], ok=1;
		}
    while (ok);
    for(register int i=2; i<=n; ++i)
        if(d[i]!=INF) printf("%d ",d[i]); else printf("0 ");
    printf("\n");
    return 0;
}