您的位置:首页 > 其它

poj 2387 Til the Cows Come Home(…

2013-04-23 09:22 459 查看
经典的dijkstra 就不多说了

#include <stdio.h>

#include <string.h>

#define M 1005

#define MAX 100000

int edge[M][M];

void dij(int n)

{

int
mark[M],dis[M];

int
i,count,k;

count = n
-1;

memset(mark,0,sizeof(mark));

for (i = 1;i
<= n;i ++)

dis[i] = edge
[i];

mark
=
1;

while (count
--)

{

int min = MAX;

for (i = 1;i <= n;i ++)

if (!mark[i]&&dis[i]
< min)

{

min = dis[i];

k = i;

}

mark[k] = 1;

for (i = 1;i <= n;i ++)

if (!mark[i]&&dis[i]
> dis[k] + edge[k][i])

dis[i] = dis[k] + edge[k][i];

}

printf
("%d\n",dis[1]);

}

int main ()

{

int
t,n,v1,v2,w,i,j;

scanf
("%d%d",&t,&n);

for (i = 1;i
<= n;i ++)

for (j = 1;j <= n;j ++)

edge[i][j] = MAX;

while (t
--)

{

scanf
("%d%d%d",&v1,&v2,&w);

w = edge[v1][v2] > w?w:edge[v1][v2];

edge[v1][v2] = w;

edge[v2][v1] = w;

}

dij
(n);

return
0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: