标签:ext ++i sub jks amp track ted main his
5 1 0 1 1 2 0 2 3 3 1 1 1 4 100 0 1 0 1
2
//Dijkstra
#include <stdio.h> #include <string.h> #define INF 0x3f3f3f3f int N; int n; int low[20]; bool vis[20]; int map[20][20]; void Dijkstra() { int pos=0; int i,j; memset(vis,0,sizeof(vis)); memset(low,INF,sizeof(low)); for(i=0;i<n;++i) { low[i]=map[0][i]; } vis[0]=1; low[0]=0; for(i=0;i<n-1;++i) { int min=INF; for(j=0;j<n;++j) { if(!vis[j]&&min>low[j]) { min=low[j]; pos=j; } } vis[pos]=1; for(j=0;j<n;++j) { if(!vis[j]&&low[j]>map[pos][j]+low[pos]) low[j]=map[pos][j]+low[pos]; } } printf("%d\n",low[n-1]); } int main() { int i, j; int M, flag; int u,v,w; while(~scanf("%d", &N)) { n=N+1; for(i=0;i<=N;++i) for(j=0;j<=i;++j) map[i][j]=map[j][i]=INF; //memset(map,INF,sizeof(map)); for(int i = 0; i < N; ++i) { scanf("%d%d", &M, &flag); if(flag) map[i][n-1]=map[n-1][i]=0; while(M--) { scanf("%d%d",&v,&w); if(map[i][v]>w) map[i][v]=map[v][i]=w; } } Dijkstra(); } }
标签:ext ++i sub jks amp track ted main his
原文地址:http://www.cnblogs.com/cynchanpin/p/7107160.html