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

Why so serious? --[NKU]schindlerlee

2010年02月07日星期日.sgu190 二分圖

2010年02月07日星期日.sgu190
sgu190:
一開始想到的竟然是狀態壓縮dp,然后一看n,貌似大了點。
然后怎么想也沒思路,上網看看,才知道原來二分圖還可以這么用,我怎么從來也沒想到呢。。。。

將圖像國際象棋棋盤那樣黑白染色,然后給對于每個顏色給每個格子一個編號。
然后選一個染色,對每個格子和他旁邊的格子建邊,這樣構成一個二分圖。
求出最大的匹配數,然后再按照題目的猥瑣要求輸出即可。

注意 題目中棋盤的格式是這個樣子的。
(2,1) (2,2)
(1,1) (1,2)
左下角是(1,1)
如果按照平常的左上角是(1,1)來搞,需要注意一下輸出

  1 
  2 int g[801][801],n,P;
  3 const int BLACK = 1;
  4 const int WHITE = 2;
  5 const int REMOVED = 3;
  6 int num[41][41],bsp,wsp,cnt;
  7 int board[41][41];
  8 int bcoord[41*41][2];
  9 int wcoord[41*41][2];
 10 int vis[801];
 11 int L[801],R[801];
 12 
 13 bool make_graph()
 14 {
 15   int i,j;cnt = 0;
 16   for (i = 1;i <= n;i++) {
 17       for (j = 1;j <= n;j++) {
 18           if (board[i][j] != REMOVED) {
 19               cnt ++;
 20               if ((i+j)%2==1) {
 21                   board[i][j] = WHITE;
 22                   wcoord[wsp][0= i, wcoord[wsp][1= j;
 23                   num[i][j] = wsp++;
 24               }else {
 25                   board[i][j] = BLACK;
 26                   bcoord[bsp][0= i, bcoord[bsp][1= j;
 27                   num[i][j] = bsp++;
 28               }
 29           }
 30       }
 31   }
 32   for (i = 1;i <= n;i++) {
 33       for (j = 1;j <= n;j++) {
 34           if (board[i][j] == BLACK) {
 35               if (board[i+1][j] == WHITE) g[num[i][j]][num[i+1][j]] = 1;
 36               if (board[i][j+1== WHITE) g[num[i][j]][num[i][j+1]] = 1;
 37               if (board[i-1][j] == WHITE) g[num[i][j]][num[i-1][j]] = 1;
 38               if (board[i][j-1== WHITE) g[num[i][j]][num[i][j-1]] = 1;
 39           }
 40       }
 41   }
 42   return true;
 43 }
 44 
 45 bool dfs(int u) {
 46   for (int v = 0;v < wsp;v++) {
 47       if (g[u][v] && !vis[v]) {
 48           vis[v] = true;
 49           if (R[v] == -1 || dfs(R[v])) {
 50               L[u] = v;
 51               R[v] = u;
 52               return true;
 53           }
 54       }
 55   }
 56   return false;
 57 }
 58 
 59 int MaxMatch()
 60 {
 61   int i,res = 0;
 62   memset(L,-1,sizeof(L));
 63   memset(R,-1,sizeof(R));
 64 
 65   for (i = 0;i < bsp;i++) {
 66       if (L[i] == -1) {
 67           memset(vis,0,sizeof(vis));
 68           if (dfs(i)) {
 69               res++;
 70           }
 71       }
 72   }
 73   return res;
 74 }
 75 
 76 int out[801][2],top;
 77 bool proc()
 78 {
 79   make_graph(); if (cnt & 1) { return false; }
 80   if (bsp == 0 || wsp == 0) { return false; }
 81   if (bsp != wsp) { return false; }
 82   return (MaxMatch() * 2 == cnt);
 83 }
 84 
 85 int main()
 86 {
 87   int i,j,k,a,b;
 88   scanf("%d%d",&n,&P);
 89   for (i = 0;i < P;i++) {
 90       scanf("%d%d",&a,&b);
 91       board[a][b] = REMOVED;
 92   }
 93   if (proc()) {
 94       printf("Yes\n");
 95       top = 0;
 96       for (i = 0;i < bsp;i++) {
 97           if (bcoord[i][1== wcoord[L[i]][1]) {
 98               if (bcoord[i][0< wcoord[L[i]][0]) {
 99                   out[top][0= bcoord[i][0];
100                   out[top][1= bcoord[i][1];
101                   top++;
102               }else {
103                   out[top][0= wcoord[L[i]][0];
104                   out[top][1= wcoord[L[i]][1];
105                   top++;
106               }
107           }
108       }
109 
110       printf("%d\n",top);
111       for (i = 0;i < top;i++) { printf("%d %d\n",out[i][0],out[i][1]); }
112 
113       top = 0;
114       for (i = 0;i < bsp;i++) {
115           if (bcoord[i][0== wcoord[L[i]][0]) {
116               if (bcoord[i][1< wcoord[L[i]][1]) {
117                   out[top][0= bcoord[i][0];
118                   out[top][1= bcoord[i][1];
119                   top++;
120               }else {
121                   out[top][0= wcoord[L[i]][0];
122                   out[top][1= wcoord[L[i]][1];
123                   top++;
124               }
125           }
126       }//http://www.shnenglu.com/schindlerlee
127       printf("%d\n",top);
128       for (i = 0;i < top;i++) { printf("%d %d\n",out[i][0],out[i][1]); }
129   }else {
130       printf("No\n");
131   }
132 
133 
134   return 0;
135 }
136 
137 

posted on 2010-02-07 15:06 schindlerlee 閱讀(1046) 評論(0)  編輯 收藏 引用 所屬分類: 解題報告

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美国产综合视频| 亚洲国产婷婷香蕉久久久久久99| 日韩午夜在线观看视频| 欧美日韩xxxxx| 99精品国产热久久91蜜凸| 亚洲日本成人网| 国产精品激情电影| 久久久久久久一区| 欧美激情第9页| 亚洲一区免费网站| 久久精品国产99国产精品澳门| 亚洲高清不卡在线| 99热精品在线观看| 国产亚洲一区二区三区在线观看| 免费精品99久久国产综合精品| 欧美 日韩 国产一区二区在线视频 | 免费在线观看成人av| 欧美不卡一卡二卡免费版| 亚洲综合国产精品| 久久久久久久尹人综合网亚洲| 亚洲精品孕妇| 性欧美videos另类喷潮| 亚洲日本欧美| 亚洲综合色自拍一区| 亚洲二区免费| 亚洲一级高清| 亚洲美女区一区| 亚洲欧美清纯在线制服| 亚洲欧洲美洲综合色网| 亚洲一区二区三区四区五区黄| 在线观看日韩av| 亚洲男人第一网站| 一本色道久久综合亚洲二区三区| 欧美一区二区视频97| 一区二区激情| 久久伊人精品天天| 性伦欧美刺激片在线观看| 欧美高潮视频| 麻豆成人综合网| 国产伦精品一区二区三区在线观看| 欧美激情成人在线视频| 国产一区二区欧美| 亚洲天堂成人在线观看| 日韩亚洲在线| 欧美.www| 欧美成人自拍| 亚洲东热激情| 久久久久成人精品| 久久男人av资源网站| 国产精品免费网站在线观看| 亚洲精品影视| 亚洲美女精品一区| 欧美国产日本韩| 亚洲成色777777女色窝| 在线精品视频一区二区| 亚欧美中日韩视频| 欧美在线免费播放| 国产精品一区久久久| 亚洲视频在线一区| 性欧美18~19sex高清播放| 欧美视频中文字幕在线| 99精品久久久| 午夜精品美女久久久久av福利| 欧美视频日韩| 亚洲综合首页| 久久九九国产精品怡红院| 国产一区二区福利| 久久精品国产99国产精品澳门| 久久久久久久精| 亚洲大片免费看| 免费看亚洲片| 亚洲人体一区| 亚洲欧美色一区| 国产精品自在在线| 久久国产精品第一页| 美女视频网站黄色亚洲| 亚洲经典自拍| 欧美日韩一区二区在线视频| 亚洲视频1区| 久久亚洲春色中文字幕| 亚洲国产精品一区制服丝袜| 女生裸体视频一区二区三区| 亚洲精品欧美日韩| 午夜精彩国产免费不卡不顿大片| 国产精品亚洲精品| 久久久www成人免费无遮挡大片 | 久久免费视频这里只有精品| 激情文学综合丁香| 欧美国产第一页| 亚洲欧美高清| 欧美高清视频在线播放| 亚洲一区精品电影| 狠狠噜噜久久| 欧美色精品天天在线观看视频 | 免费毛片一区二区三区久久久| 亚洲人成网站色ww在线| 国产精品美女www爽爽爽| 久久精品日韩一区二区三区| 91久久精品美女| 欧美在线网站| 日韩一级精品| 国内精品国语自产拍在线观看| 牛牛国产精品| 先锋资源久久| 日韩亚洲欧美成人| 久久青草欧美一区二区三区| 99xxxx成人网| 激情国产一区| 国产精品久久久久久影视| 老司机精品视频网站| 亚洲男人影院| 亚洲精品永久免费| 蜜桃av综合| 久久精品视频免费| 在线视频精品一| 亚洲国产成人不卡| 国产日韩在线一区| 欧美日韩在线一区二区三区| 猫咪成人在线观看| 欧美在线免费一级片| 亚洲午夜精品久久| 日韩午夜剧场| 亚洲国产天堂久久国产91| 麻豆成人在线播放| 久久久999精品| 午夜一区不卡| 亚洲一区国产精品| 亚洲午夜一区二区| 99xxxx成人网| 亚洲欧洲精品天堂一级| 亚洲成人在线免费| 激情亚洲网站| 一区二区三区在线观看视频 | 欧美高清影院| 久久深夜福利免费观看| 欧美一区国产二区| 午夜天堂精品久久久久| 亚洲在线一区| 亚洲一区二区三区高清不卡| 日韩视频在线一区| 一区二区激情小说| 亚洲校园激情| 午夜精品久久久久久久99樱桃| 亚洲午夜精品一区二区| 亚洲一区二区三区高清| 亚洲一区区二区| 亚洲欧美日韩另类| 午夜精品剧场| 久久精品免费| 久久综合婷婷| 欧美激情精品久久久久久| 欧美韩日一区二区| 欧美日韩在线不卡一区| 国产精品久久久一区二区| 国产精品日韩久久久| 国产亚洲一区二区三区在线播放| 国精品一区二区三区| 在线观看一区| 99av国产精品欲麻豆| 亚洲综合精品| 久久婷婷麻豆| 亚洲精品免费一二三区| 在线一区二区日韩| 欧美自拍偷拍午夜视频| 欧美成人精品h版在线观看| 欧美日韩亚洲精品内裤| 国产精品视频一区二区三区| 国内成+人亚洲+欧美+综合在线| 亚洲黄色av一区| 亚洲专区一区| 蜜桃av噜噜一区| 日韩亚洲综合在线| 性欧美大战久久久久久久免费观看 | 亚洲五月婷婷| 久久人人97超碰人人澡爱香蕉| 欧美黄色影院| 国产无一区二区| 91久久精品国产| 欧美一级大片在线观看| 欧美电影在线| 亚洲欧洲99久久| 欧美高清在线观看| 国产视频在线一区二区| 亚洲激情国产| 久久久久99| av成人天堂| 免费日韩视频| 国产日韩欧美一区二区三区四区| 亚洲高清毛片| 欧美伊人久久久久久久久影院 | 可以免费看不卡的av网站| 日韩视频永久免费| 久久综合电影一区| 国产欧美一区二区三区视频| 亚洲精品乱码久久久久久| 久久综合久久美利坚合众国| 亚洲夜间福利| 欧美日韩国产精品一区| 在线成人av网站| 久久久久国产精品麻豆ai换脸|