首页 > 其他 > 详细

uvalive5818 uva12376 As Long as I Learn, I Live

时间:2015-02-19 21:47:47      阅读:321      评论:0      收藏:0      [点我收藏+]

题意:给出一个又向图每个图有权值和编号(正方形里的是编号),从第0号节点开始每次向当前节点所连的点中权值最大的节点移动(不会存在权值相同的节点),问最后所在的节点编号和经过的节点的权值之和。

解:模拟就好~

技术分享
 1 #include<cstdio>
 2 #include<algorithm>
 3 #include<cmath>
 4 #include<cstring>
 5 #include<vector>
 6 
 7 using namespace std;
 8 
 9 int T;
10 int n,m;
11 int f[107];
12 vector <int> G[107];
13 
14 int main(){
15     scanf("%d",&T);
16     for (int cas=1;cas<=T;cas++){
17             scanf("%d%d",&n,&m);
18             for (int i=0;i<n;i++){
19                     scanf("%d",&f[i]);
20                     G[i].clear();
21             }
22             for (int i=0;i<m;i++){
23                     int x,y;
24                     scanf("%d%d",&x,&y);
25                     G[x].push_back(y);
26             }
27             int now=0;
28             int totv=0;
29             while (1){
30             //        printf("%d %d\n",now,totv);
31                     int to=0;
32                     int tov=0;
33                     for (int i=0;i<G[now].size();i++){
34                             if (f[G[now][i]]>tov){
35                                     to=G[now][i];
36                                     tov=f[G[now][i]];
37                             }
38                     }
39                     if (to==0) break;
40                     totv+=tov;
41                     now=to;
42             }
43             printf("Case %d: %d %d\n",cas,totv,now);
44     }
45     return 0;
46 }
47 /*
48 2
49 6 6
50 0 8 9 2 7 5
51 5 4
52 5 3
53 1 5
54 0 1
55 0 2
56 2 1
57 6 6
58 0 8 9 2 6 5
59 5 4
60 5 3
61 1 5
62 0 1
63 0 2
64 2 1
65 */
View Code

 

uvalive5818 uva12376 As Long as I Learn, I Live

原文:http://www.cnblogs.com/baby-mouse/p/4296292.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!