码迷,mamicode.com
首页 > 其他好文 > 详细

hdu 4858 水题

时间:2015-05-27 20:40:22      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:

题意:我们建造了一个大项目!这个项目有n个节点,用很多边连接起来,并且这个项目是连通的!两个节点间可能有多条边,不过一条边的两端必然是不同的节点。每个节点都有一个能量值。
现在我们要编写一个项目管理软件,这个软件呢有两个操作:

1.给某个项目的能量值加上一个特定值。
2.询问跟一个项目相邻的项目的能量值之和。(如果有多条边就算多次,比如a和b有2条边,那么询问a的时候b的权值算2次)。

链接:点我

暴力过

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<cstring>
 5 #include<cmath>
 6 #include<queue>
 7 #include<map>
 8 using namespace std;
 9 #define MOD 1000000007
10 #define pb(a) push_back(a)
11 const int INF=0x3f3f3f3f;
12 const double eps=1e-5;
13 typedef long long ll;
14 #define cl(a) memset(a,0,sizeof(a))
15 #define ts printf("*****\n");
16 const int MAXN=100005;
17 int val[MAXN];
18 int n,m,tt,cnt;
19 vector<int> vc[MAXN];
20 int main()
21 {
22     int i,j,k;
23     #ifndef ONLINE_JUDGE
24     freopen("1.in","r",stdin);
25     #endif
26     scanf("%d",&tt);
27     while(tt--)
28     {
29         scanf("%d%d",&n,&m);
30         int a,b;
31         for(i=0;i<=n;i++)
32         {
33             vc[i].clear();
34         }
35         for(i=0;i<m;i++)
36         {
37             scanf("%d%d",&a,&b);
38             vc[a].pb(b);
39             vc[b].pb(a);
40         }
41         for(i=0;i<=n;i++)   val[i]=0;
42         scanf("%d",&k);
43         while(k--)
44         {
45             int f,id,w;
46             scanf("%d",&f);
47             if(f==0)
48             {
49                 scanf("%d%d",&id,&w);
50                 val[id]+=w;
51             }
52             else
53             {
54                 scanf("%d",&w);
55                 int sum=0;
56                 for(i=0;i<vc[w].size();i++)
57                 {
58                     sum+=val[vc[w][i]];
59                 }
60                 printf("%d\n",sum);
61             }
62         }
63     }
64 }

 

hdu 4858 水题

标签:

原文地址:http://www.cnblogs.com/cnblogs321114287/p/4534253.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!