A Za, A Za, Fighting...

坚信:勤能补拙

PKU 1251 Jungle Roads/PKU 1258 Agri-Net

问题:
http://acm.pku.edu.cn/JudgeOnline/problem?id=1251
http://acm.pku.edu.cn/JudgeOnline/problem?id=1258

思路:
最简单典型的最小生成树,PRIM算法
参考算法导论

代码(pku 1251):
 1 /* MST problem */
 2 #include<stdio.h>
 3 #include<stdlib.h>
 4 #include<string.h>
 5 #define MAX_LEN 27
 6 #define INF 0x7FFFFFFF
 7 int num, min;
 8 int adj[MAX_LEN][MAX_LEN];
 9 int key[MAX_LEN], in[MAX_LEN];
10 
11 void
12 init()
13 {
14     int i, j, k, dis;
15     char tmp[2], tmp1[2];
16     memset(adj, 0sizeof(adj));
17     memset(in0sizeof(in));
18     min = 0;
19     for(i=0; i<num; i++)
20         key[i] = INF;
21     for(i=0; i<num-1; i++) {
22         scanf("%s %d", tmp, &k);
23         for(j=0; j<k; j++) {
24             scanf("%s %d", tmp1, &dis);
25             adj[tmp[0]-'A'][tmp1[0]-'A'= dis;
26             adj[tmp1[0]-'A'][tmp[0]-'A'= dis;
27         }
28     }
29 }
30 
31 void
32 prim()
33 {
34     int i, j, k, cur;
35     /* start from vertex 'A' */
36     in[0= 1;
37     for(i=1; i<num; i++)
38         if(adj[0][i])
39             key[i] = adj[0][i];
40     for(i=1; i<num; i++) { /* num-1 vertex left */
41         cur = INF;
42         for(j=0; j<num; j++) {
43             if(!in[j] && key[j]<cur) {
44                 cur = key[j];
45                 k = j;
46             }
47         }
48         min += cur;
49         in[k] = 1;
50         for(j=0; j<num; j++) {
51             if(adj[k][j]) {
52                 if(!in[j] && adj[k][j]<key[j])
53                     key[j] = adj[k][j];
54             }
55         }
56     }
57 }
58 
59 int
60 main(int argc, char **argv)
61 {
62     while(scanf("%d"&num)!=EOF && num) {
63         init();
64         prim();
65         printf("%d\n", min);
66     }
67 }

posted on 2010-09-05 00:09 simplyzhao 阅读(156) 评论(0)  编辑 收藏 引用 所属分类: F_图算法


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

<2010年10月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

统计

常用链接

留言簿(1)

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜