HDU-----(4858)專案管理(類比)

來源:互聯網
上載者:User

標籤:des   style   blog   http   color   io   os   java   ar   

專案管理

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1013    Accepted Submission(s): 360


Problem Description我們建造了一個大項目!這個項目有n個節點,用很多邊串連起來,並且這個項目是連通的!
兩個節點間可能有多條邊,不過一條邊的兩端必然是不同的節點。
每個節點都有一個能量值。

現在我們要編寫一個專案管理軟體,這個軟體呢有兩個操作:
1.給某個項目的能量值加上一個特定值。
2.詢問跟一個項目相鄰的項目的能量值之和。(如果有多條邊就算多次,比如a和b有2條邊,那麼詢問a的時候b的權值算2次)。 

 

Input第一行一個整數T(1 <= T <= 3),表示測試資料的個數。
然後對於每個測試資料,第一行有兩個整數n(1 <= n <= 100000)和m(1 <= m <= n + 10),分別表示點數和邊數。

然後m行,每行兩個數a和b,表示a和b之間有一條邊。
然後一個整數Q。

然後Q行,每行第一個數cmd表示操作類型。如果cmd為0,那麼接下來兩個數u v表示給項目u的能量值加上v(0 <= v <= 100)。
如果cmd為1,那麼接下來一個數u表示詢問u相鄰的項目的能量值之和。

所有點從1到n標號。 

 

Output對每個詢問,輸出一行表示答案。 

 

Sample Input13 21 21 360 1 150 3 41 11 30 2 331 2 

 

Sample Output41515 

 

AuthorCLJ 

 

Source BestCoder Round #1  代碼:
 1 #pragma comment(linker, "/STACK:1024000000,1024000000") 2 #include<cstdio> 3 #include<cstring> 4 #include<cstdlib> 5 #include<vector> 6 using namespace std; 7 const int maxn=100005; 8 vector<vector<int> >arr; 9 //vector<int>arr[maxn];10 int ans[maxn];11 int n,m,i;12 int main(){13   int cas,a,b,q,cmd,u,v;14   scanf("%d",&cas);15   while(cas--){16     scanf("%d%d",&n,&m);17     arr.clear();18     arr.resize(n+1);19     memset(ans,0,sizeof(int)*(n+1));20     for(i=0;i<m;i++){21      scanf("%d%d",&a,&b);22      arr[b].push_back(a);23      arr[a].push_back(b);24     }25     scanf("%d",&q);26    while(q--){27         scanf("%d",&cmd);28     if(cmd==1){29        scanf("%d",&u);30        printf("%d\n",ans[u]);31     }32     else{33       scanf("%d%d",&u,&v);34       int len=arr[u].size();35       for(i=0;i<len;i++)36         ans[arr[u][i]]+=v;37     }38    }39    //for(i=1;i<=n;i++)arr[i].clear();40   }41   return 0;42 }
View Code

最佳化之後:

 1 //#pragma comment(linker,"\STACK:1024000000,1024000000"); 2 #include<cstdio> 3 #include<cstring> 4 #include<cstdlib> 5 #include<vector> 6 using namespace std; 7 const int maxn=100005; 8 vector<int>arr[maxn]; 9 int ans[maxn];10 int n,m,i;11 int main(){12   int cas,a,b,q,cmd,u,v;13   scanf("%d",&cas);14   while(cas--){15     scanf("%d%d",&n,&m);16     memset(ans,0,sizeof(int)*(n+1));17     for(i=0;i<m;i++){18      scanf("%d%d",&a,&b);19      arr[b].push_back(a);20      arr[a].push_back(b);21     }22     scanf("%d",&q);23    while(q--){24         scanf("%d",&cmd);25     if(cmd==1){26        scanf("%d",&u);27        printf("%d\n",ans[u]);28     }29     else{30       scanf("%d%d",&u,&v);31       int len=arr[u].size();32       for(i=0;i<len;i++)33         ans[arr[u][i]]+=v;34     }35    }36    //for(i=1;i<=n;i++)arr[i].clear();37   }38   return 0;39 }
View Code

 

HDU-----(4858)專案管理(類比)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.