青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 43,  comments - 9,  trackbacks - 0
08合肥網賽某題。
http://poj.org/problem?id=3697
題意是問在N個點的完全圖(N<=10,000)中刪掉M(M<=1,000,000)條邊后, 還有多少個點與頂點1連通(頂點編號從1開始).
暴力BFS+HASH+各種WS優化的方法很多, 但是出題人原意應該是O(M)的做法吧... 下面是我YY出來的O(M)的做法.

只考慮這M條待刪邊, 能得到什么信息呢? 可以先從點1入手. 掃一遍與1鄰接的點, 那么剩下沒被掃到的點肯定與1是連通的. 而被掃到的點是"有可能"與1不連通. 所以就把那些肯定與1連通的點做標記. 從這些確定連通的點中任選一個u, 再掃描它的所有鄰接點. 這之后, 如果一個點一共被掃了2次, 那么它才"有可能"與1不連通, 其它少于2次的點肯定與1連通, 因為它或者與1連通, 或者與u連通, 而u是已知與1連通的. 這樣再拿出一個已經確定連通的點, 掃描它的鄰接點, 把被掃過次數<3的又標記為已連通......

經過上面的YY, 算法基本上就出來了:
把已知肯定與1連通的點集稱為S, 剩下不確定的為T. 一開始, S中只有1這一個點, 其它點都在T中. 每個點有個計數器, 記錄自己被掃了多少次.
1) 從S中取出一個沒處理過的點, 把它標記為已處理, 并遍歷它的所有鄰接點, 被遍歷到的點的計數器都+1.
2) T中所有"計數<S中已處理點個數"的, 都可以確定是連通的, 把它們從T中刪除, 加入S中.
3) 重復1), 直到S中所有點都處理完.
這時, S中的點就是與1連通的, T中剩下的就是不連通的.

復雜度分析:
讀入邊和掃描邊都是O(M)的.
S集可以用隊列維護, 總共O(N).
T集的維護: 每一輪都要掃一遍當前的T, 把所有計數小的刪掉, 放進S中. 這樣, 這一步的總復雜度就是O(sigma(T)), 會不會到達O(N^2)呢? 實際上是不會的. 因為一條邊最多只會使一個頂點的計數+1, 因此每一輪還剩在T中的點數不會超過這一輪遍歷過的邊數. 這樣, 所有回合的sigma(T)就肯定不會超過總邊數. 因此這里總共也是O(M)的. 嚴格來說算上第1輪有N-1個點, 也是O(M+N).
這樣總的復雜度就是O(M)了.

不過這個算法讀入用scanf時, g++跑了1000+ms, 改成getchar才到200+ms的. 不知道排前面的神們是不是有更NB的算法.

代碼:
 1 #include 
 2 #include 
 3 #include 
 4 #include 
 5 #include 
 6 using namespace std;
 7 
 8 const int MAXN = 10010;
 9 const int MAXM = 1000010;
10 
11 struct Edge {
12     int v, next;
13 }edg[MAXM*2];
14 int ecnt, gg[MAXN];
15 bool yes[MAXN];
16 int que[MAXN], pq, sq, cnt[MAXN], vt[MAXN], nt;
17 int N, M;
18 
19 inline int getnextint()
20 {
21     int r = 0;
22     char c;
23     while(!isdigit(c=getchar())); 
24     do{
25         r = r*10 + c-'0';
26     } while(isdigit(c=getchar()));
27     return r;
28 }
29 
30 inline void addedge(int u , int v)
31 {
32     edg[ecnt].v = v; edg[ecnt].next = gg[u], gg[u] = ecnt++;
33     edg[ecnt].v = u; edg[ecnt].next = gg[v], gg[v] = ecnt++;
34 }
35 
36 int main()
37 {
38     int cas = 0;
39     while(~scanf("%d%d"&N, &M) && !(N==0 && M==0)){
40         
41         ecnt = 0;
42         for(int i = 0; i < N; i++){
43             gg[i] = -1;
44             yes[i] = i==0 ? true : false;
45             cnt[i] = 0;
46             vt[i] = i+1;
47         }
48         nt = N-1;
49         
50         for(int i = 0; i < M; i++){
51             int u = getnextint();
52             int v = getnextint();
53             addedge(--u, --v);
54         }
55         
56         pq = sq = 0;
57         que[sq++= 0;
58         yes[0= true;
59         
60         while(pq != sq) {
61             int u = que[pq++];
62             for(int e = gg[u]; e >= 0; e = edg[e].next) {
63                 if(!yes[edg[e].v])
64                     cnt[edg[e].v]++;
65             }
66             for(int i = 0; i < nt; i++) {
67                 while(i < nt && cnt[vt[i]] < pq) {
68                     yes[vt[i]] = true;
69                     que[sq++= vt[i];
70                     if(i < --nt) 
71                         vt[i] = vt[nt];
72                 }
73             }
74         }
75         printf("Case %d: %d\n"++cas, sq-1);
76         
77     }
78     return 0;
79 }
posted on 2011-08-15 03:06 wolf5x 閱讀(422) 評論(0)  編輯 收藏 引用 所屬分類: acm_icpc
<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

"Do not spend all your time on training or studying - this way you will probably become very exhausted and unwilling to compete more. Whatever you do - have fun. Once you find programming is no fun anymore – drop it. Play soccer, find a girlfriend, study something not related to programming, just live a life - programming contests are only programming contests, and nothing more. Don't let them become your life - for your life is much more interesting and colorful." -- Petr

留言簿(3)

隨筆分類(59)

隨筆檔案(43)

cows

搜索

  •  

最新評論

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            老司机成人在线视频| 久久亚洲一区二区| 久久狠狠一本精品综合网| 99ri日韩精品视频| 99这里只有精品| 一本一本a久久| 亚洲午夜久久久久久尤物 | 欧美成人精品福利| 久久久久久香蕉网| 蜜桃精品久久久久久久免费影院| 久久亚洲捆绑美女| 欧美激情第10页| 国产精品一区二区三区乱码| 久久一区亚洲| 最近中文字幕日韩精品| 99成人免费视频| 欧美美女bb生活片| 性xx色xx综合久久久xx| 亚洲电影欧美电影有声小说| 亚洲欧洲日韩综合二区| 久久亚洲高清| 欧美激情在线狂野欧美精品| 亚洲婷婷综合色高清在线| 亚洲综合视频一区| 校园春色综合网| 在线视频精品| 国产精品久久久久久av福利软件| 亚洲欧美国产精品桃花| 欧美电影免费观看高清完整版| 亚洲伦理在线| 香蕉精品999视频一区二区| 欧美成人dvd在线视频| 99在线精品视频在线观看| 欧美一区二区三区男人的天堂| 欧美丰满少妇xxxbbb| 国产欧美日韩综合一区在线播放 | 亚洲精品综合久久中文字幕| 国产精品99久久久久久www| 久久在线视频| 在线观看欧美| 女人色偷偷aa久久天堂| 久久性天堂网| 欧美一区二区免费视频| 日韩亚洲欧美成人| 欧美91视频| 久久人人97超碰精品888| 亚洲国产精品成人久久综合一区| 久久高清免费观看| 久久久久国色av免费看影院| 狠狠狠色丁香婷婷综合久久五月 | 国产麻豆9l精品三级站| 欧美一级片在线播放| 久久av最新网址| 亚洲乱码精品一二三四区日韩在线 | 久久综合五月| 欧美另类人妖| 久久亚洲精品中文字幕冲田杏梨| 欧美一区国产一区| 亚洲精品永久免费| 亚洲视频一区二区免费在线观看| 国产日韩综合| 亚洲另类自拍| 亚洲国产日韩美| 亚洲网站在线| 亚洲性线免费观看视频成熟| 香港久久久电影| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 亚洲人成毛片在线播放女女| 久久亚洲美女| 欧美特黄a级高清免费大片a级| 欧美v日韩v国产v| 伊人久久大香线| 中文av一区二区| 国内外成人免费激情在线视频网站| 久久久噜噜噜久噜久久 | 亚洲综合日本| 亚洲精品一区二区三区婷婷月| 亚洲在线一区二区| 性伦欧美刺激片在线观看| 久久久久久97三级| 新67194成人永久网站| 欧美三日本三级少妇三2023| 日韩一二在线观看| 一区二区av| 欧美午夜一区二区三区免费大片| 这里只有精品丝袜| 午夜精品区一区二区三| 国产香蕉97碰碰久久人人| 久久久久一本一区二区青青蜜月| 久久免费观看视频| 亚洲黄页视频免费观看| 欧美系列亚洲系列| 欧美一二三区精品| 91久久午夜| 性做久久久久久免费观看欧美| 国产亚洲欧美激情| 欧美一级二区| 女女同性精品视频| 亚洲欧洲av一区二区| 亚洲国产成人久久| 悠悠资源网亚洲青| 亚洲国产成人久久| 在线观看日韩av先锋影音电影院| 亚洲第一天堂av| 欧美区一区二区三区| 美女脱光内衣内裤视频久久影院 | 欧美福利网址| 欧美成人在线影院| 嫩草影视亚洲| 99精品久久久| 在线视频你懂得一区| 欧美一区日韩一区| 欧美黄色视屏| 欧美国产日韩一区| 国产无一区二区| 亚洲日本激情| 久久九九精品| 在线一区欧美| 欧美黄色大片网站| 国外成人在线视频| 亚洲精品一区二区三区在线观看 | 久久躁狠狠躁夜夜爽| 久久精品视频在线播放| 亚洲国产一区二区三区a毛片| 亚洲欧美国产日韩天堂区| 欧美a级大片| 亚洲黄色一区二区三区| 欧美高清视频在线播放| 欧美中文字幕久久| 国产亚洲视频在线| 欧美伊人久久大香线蕉综合69| 久久综合网色—综合色88| 亚洲国产综合在线| 欧美成人亚洲| 一区二区欧美亚洲| 久久久精品性| 久久国产精品免费一区| 欧美午夜精品一区| 先锋影音一区二区三区| 亚洲午夜一区二区| 国产欧美亚洲精品| 蜜桃av一区| 欧美影片第一页| 亚洲国产91色在线| 性做久久久久久| 国产一区二区三区网站| 久久亚洲捆绑美女| 久久久噜久噜久久综合| 伊人久久久大香线蕉综合直播| 噜噜噜91成人网| 久久人91精品久久久久久不卡| 国产视频在线一区二区 | 国产在线欧美日韩| 欧美亚洲网站| 欧美在线视频网站| 伊人婷婷久久| 亚洲第一视频| 国产精品久久久久久久久免费樱桃| 亚洲一区二区在线| 一区二区毛片| 国产精品久久91| 久久xxxx| 欧美日韩国产综合在线| 欧美夜福利tv在线| 欧美久久99| 欧美一区在线看| 欧美专区在线观看| 午夜精品福利在线| 欧美精品一卡二卡| 美女主播一区| 在线观看免费视频综合| 久久国产色av| 久久不射2019中文字幕| 欧美午夜精品电影| 日韩一级黄色大片| 日韩视频在线一区| 欧美风情在线观看| 欧美va天堂va视频va在线| 欧美日韩日本国产亚洲在线| 欧美制服丝袜第一页| 国产精品v日韩精品| 一区二区欧美日韩| 亚洲男女自偷自拍| 国产一区二区久久久| 欧美在线观看www| 久久人人超碰| 国产乱肥老妇国产一区二| 香蕉视频成人在线观看 | 国产在线高清精品| 欧美一区二区视频97| 欧美在线免费视屏| 狠狠久久五月精品中文字幕| 久久精品国产免费| 欧美好吊妞视频| 欧美一区二区视频网站| 国内外成人免费激情在线视频网站| 媚黑女一区二区| 欧美一区亚洲| 一区二区三区波多野结衣在线观看| 免费不卡中文字幕视频|