BestCoder Round #1 第二題 專案管理

來源:互聯網
上載者:User

標籤:style   blog   color   os   io   for   

// 第二題 我記得很久很久很久以前看過這樣的題目,忘記是哪的地區賽了

// 記得有人說和節點度數有關,我記不清了,反正當時完全不懂

// 然後我想了想,估計就是更新節點度數有關,YY出來可能只要更新相鄰節點度數更大或更小的就可以了

// 複雜度不知道多少,就是提交了試試,15MS就過了

// 看來就是這樣了

// 具體就是求出每個節點度數,然後每次更新時,只要更新與自己相連,但度數比自己大的

// 查詢時把度數自己大的節點累加的值加上就可輸出,具體看代碼比較清楚

// 也就做得來這2題了(見識少,以前題目做得少)。

// 不過在廈門實訓感覺蠻悠閑,企業上課就是比學校效率

#include <iostream>#include <string.h>#include <stdio.h>#include <algorithm>#include <vector>#include <map>#include <queue>using namespace std;#define LL long long#define N 100010#define mod 1000000007vector<int> V[N],up[N];//V記錄邊,up記錄鄰接節點,但度數自己大int in[N];//記錄節點度數int sum[N],add[N];//add 儲存更新int main(){  //  priority_queue<int,vector<int>,greater<int> >    int T;    int n,m,Q;    int a,b;    int i,j;    scanf("%d",&T);    while(T--)    {        scanf("%d %d",&n,&m);        for(i=1;i<=n;i++){            V[i].clear();            in[i]=0;            up[i].clear();            sum[i]=add[i]=0;        }        while(m--)        {           scanf("%d %d",&a,&b);           V[a].push_back(b);           V[b].push_back(a);           in[b]++;           in[a]++;        }        for(a=1;a<=n;a++)            for(j=0;j<V[a].size();j++)         {             b=V[a][j];            if(in[b]>=in[a])                up[a].push_back(b);         }       scanf("%d",&Q);       int cmd,u,v;       while(Q--)       {           scanf("%d %d",&cmd,&u);            if(cmd==0)            {                scanf("%d",&v);                add[u]+=v;                for(i=0; i<up[u].size(); i++)                {                    j=up[u][i];                    sum[j]+=v;                }            }            else            {                int ans=sum[u];               for(i=0; i<up[u].size(); i++)                {                    j=up[u][i];                    if(in[j]!=in[u])                     ans+=add[j];                }                printf("%d\n",ans);            }       }    }    return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.