A Za, A Za, Fighting...

坚信:勤能补拙

PKU 3411 Paid Roads

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

思路:
做过几道类似的题,DFS
不过,这一道有点特殊,每条边以及每个点的访问次数并非只有一次,为了能够预付款,需要重复访问某个点或者边
这样出现的一个问题就是搜索何时结束?这里参考了网上的代码: 重复访问的原因是为了能够预先到达某个城市,而城市的总个数为N,也就是说,每个点的重复访问次数不需要超过N

另外,由于每两个点之间可能存在多条路径,因此不能使用邻接矩阵,而需要邻接表

代码
 1 int N, m;
 2 int min;
 3 int mark[MAX_LEN];
 4 struct Node {
 5     int dest;
 6     int adv;
 7     int p, r;
 8     struct Node *next;
 9 };
10 struct Node *roads[MAX_LEN];
11 struct Node save[MAX_LEN];
12 
13 void
14 init()
15 {
16     int i, a, b, c, p, r, cnt = 0;
17     min = INF;
18     memset(mark, 0sizeof(mark));
19     memset(roads, 0sizeof(roads));
20     for(i=0; i<m; i++) {
21         scanf("%d %d %d %d %d"&a, &b, &c, &p, &r);
22         save[cnt].dest = b;
23         save[cnt].adv = c;
24         save[cnt].p = p;
25         save[cnt].r = r;
26         save[cnt].next = roads[a];
27         roads[a] = save+cnt;
28         ++cnt;
29     }
30 }

posted on 2010-08-03 16:47 simplyzhao 阅读(251) 评论(0)  编辑 收藏 引用 所属分类: B_搜索


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


导航

<2011年8月>
31123456
78910111213
14151617181920
21222324252627
28293031123
45678910

统计

常用链接

留言簿(1)

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜