<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      HDU5934 強連通分量

      題目:http://acm.hdu.edu.cn/showproblem.php?pid=5934

      1. 根據距離關系建邊
      2. 對于強連通分量來說,只需引爆話費最小的炸彈即可引爆整個強連通分量
      3. 將所有的強連通分量縮成點,我們就得到了一棵樹,我們只需要引爆樹根的炸彈即可
      4. 我們可以處理出每個點所屬的強連通分量的拓撲序,或者說染色法,把屬于同一個強連通分量的點標上同一個數字
      5. 處理完強連通分量后,我們不需要建樹,我們可以用并查集來維護,更好的辦法是統計每個點的入度,入讀為0即為根節點
         1 #include<bits/stdc++.h>
         2 using namespace std;
         3 typedef long long ll;
         4 const int maxv = 1111;
         5 int V;//總共點的個數 
         6 vector<int> g[maxv];
         7 vector<int> rg[maxv];
         8 vector<int> vs;
         9 bool used[maxv];
        10 int cmp[maxv];//保存拓撲序 
        11 ll cost[maxv];//每個拓撲序的話費 
        12 ll x[1111],y[1111],r[1111],c[1111];
        13 ////scc
        14 void dfs(int v){
        15     used[v] = true;
        16     for(int i = 0;i<g[v].size();i++)
        17         if(!used[g[v][i]])
        18             dfs(g[v][i]);
        19     vs.push_back(v);
        20 }
        21 void rdfs(int v,int k){
        22     used[v] = true;
        23     cmp[v] = k;
        24     cost[k] = min(cost[k],c[v]);//處理出每個強連通分量的最小話費 
        25     for(int i = 0;i<rg[v].size();i++)
        26         if(!used[rg[v][i]])
        27             rdfs(rg[v][i],k);
        28 }
        29 int scc(){
        30     memset(used,0,sizeof(used));
        31     vs.clear();
        32     for(int v = 1;v<=V;v++)//這里要注意,下標是從0開始還是從1開始 
        33         if(!used[v])
        34             dfs(v);
        35     memset(used,0,sizeof(used));
        36     int k = 1;
        37     for(int i = vs.size()-1;i>=0;i--)
        38         if(!used[vs[i]])
        39             rdfs(vs[i],k++);
        40     return k;
        41 }
        42 //////
        43 void addedge(int i,int j){
        44     ll dis = (y[i]-y[j])*(y[i]-y[j])+(x[i]-x[j])*(x[i]-x[j]);
        45     if(dis <= r[i]*r[i]){
        46         g[i].push_back(j);
        47         rg[j].push_back(i);    
        48     }
        49     if(dis <= r[j]*r[j]){
        50         g[j].push_back(i);
        51         rg[i].push_back(j);
        52     }
        53 }
        54 //////
        55 int du[1111];
        56 int main(){
        57     int t;
        58     cin >> t;
        59     int cas = 1;
        60     while(t--){
        61         int n;
        62         cin >> n;
        63         V = n;
        64         memset(cost,0x3f3f3f3f,sizeof(cost));
        65         for(int i = 1;i<=n;i++){
        66             g[i].clear();
        67             rg[i].clear();
        68         }
        69         for(int i = 1;i<=n;i++){
        70             scanf("%I64d%I64d%I64d%I64d",&x[i],&y[i],&r[i],&c[i]);
        71             for(int j = 1;j<i;j++){
        72                 addedge(i,j);
        73             }
        74         }
        75         int k = scc();
        76         memset(du,0,sizeof(du));
        77         for(int i = 1;i<=n;i++)
        78             for(int j = 0;j<g[i].size();j++)
        79                 if(cmp[i] != cmp[g[i][j]])//拓撲序不同,度數加1 
        80                     du[cmp[g[i][j]]]++;
        81         ll ans = 0;
        82         for(int i = 1;i<k;i++)
        83             if(du[i] == 0)
        84                 ans += cost[i] ;
        85         printf("Case #%d: %I64d\n",cas++,ans);
        86     }
        87     return 0;
        88 }

         

      posted @ 2016-11-01 16:46  Esieve  閱讀(358)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 99RE6在线观看国产精品| 国产福利在线观看免费第一福利| 无码欧美毛片一区二区三| 古交市| 日本美女性亚洲精品黄色| 精品国产乱弄九九99久久| 亚洲精品无码AV人在线观看国产| 欧美黑人添添高潮a片www| av色国产色拍| 九九热视频在线观看视频| 国产精品多p对白交换绿帽| 屯昌县| 国产精品对白刺激久久久| 亚洲第一综合天堂另类专| 18禁国产一区二区三区| 久久国内精品自在自线91| 在线无码午夜福利高潮视频| 一区二区视频| 日韩av片无码一区二区不卡| 久久精品午夜视频| 精品国产色情一区二区三区| 国产精品午夜福利精品| 91精品国产色综合久久| 亚洲高清国产拍精品熟女| 国产免费一区二区三区在线观看| 一区二区三区四区高清自拍| 黑人巨大精品oideo| 亚洲一区中文字幕人妻| 欧美日韩国产亚洲沙发| 亚洲熟女乱综合一区二区三区| 国产精品视频一区不卡| 久热视频这里只有精品6| 野花在线观看免费观看高清| 久久se精品一区二区三区| 好看的国产精品自拍视频| 一二三三免费观看视频| 午夜免费视频国产在线| 精品蜜臀国产av一区二区| 欧美在线一区二区三区精品| 人人人澡人人肉久久精品| 激情动态图亚洲区域激情|