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

Why so serious? --[NKU]schindlerlee

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

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

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

注意 題目中棋盤的格式是這個樣子的。
(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>
            亚洲经典三级| 久久精品国产欧美亚洲人人爽| 亚洲国产精品久久久| 欧美一区二区视频免费观看| 欧美一级欧美一级在线播放| 国产精品毛片| 性视频1819p久久| 久久久久欧美精品| 在线观看国产日韩| 欧美国产精品一区| 一区二区三区日韩欧美精品| 亚洲伊人网站| 国产精品毛片a∨一区二区三区|国 | 亚洲精品国产拍免费91在线| 亚洲精品欧美专区| 欧美日韩性生活视频| 亚洲午夜成aⅴ人片| 久久久国产成人精品| 在线欧美日韩精品| 欧美日韩国产综合一区二区| 一区二区三区四区五区精品视频| 亚洲男人第一网站| 激情综合电影网| 欧美高清不卡| 亚洲视频自拍偷拍| 久久久久久穴| 亚洲欧洲精品一区二区三区不卡 | 亚洲人精品午夜| 亚洲性感美女99在线| 国产亚洲一级| 欧美第十八页| 亚洲欧美在线磁力| 亚洲国产老妈| 欧美一区在线看| 亚洲激情六月丁香| 欧美午夜精品久久久久久孕妇| 欧美在线视频a| 欧美成人免费大片| 亚洲女同精品视频| 最新69国产成人精品视频免费| 国产精品久久久久毛片软件 | 亚洲在线黄色| 另类图片综合电影| 亚洲无线一线二线三线区别av| 国产一区二区三区的电影| 欧美aaa级| 欧美中文字幕在线播放| 亚洲人成艺术| 麻豆精品传媒视频| 香蕉尹人综合在线观看| 亚洲三级视频| 精品动漫一区二区| 国产精品免费网站| 欧美精品久久久久久久久久| 香蕉成人伊视频在线观看| 最新日韩欧美| 欧美成人一区二区三区| 欧美影视一区| 亚洲综合精品四区| 一本色道精品久久一区二区三区| 一区二区亚洲| 国产亚洲a∨片在线观看| 欧美网站在线观看| 欧美激情精品久久久| 久久久激情视频| 亚洲欧美综合| 一片黄亚洲嫩模| 亚洲人体大胆视频| 欧美国产视频在线观看| 久久久久网站| 久久精品av麻豆的观看方式| 亚洲一区三区电影在线观看| 亚洲日产国产精品| 亚洲国产日韩精品| 一区二区在线视频| 狠久久av成人天堂| 国产喷白浆一区二区三区| 欧美日韩亚洲一区二区三区| 欧美激情区在线播放| 久久综合精品一区| 久久影院亚洲| 蜜臀av国产精品久久久久| 久久亚洲综合色| 久久大香伊蕉在人线观看热2| 亚洲资源在线观看| 午夜精品成人在线| 亚洲欧美国内爽妇网| 亚洲一区免费视频| 亚洲一二三四久久| 亚洲夜间福利| 亚洲欧美日韩电影| 欧美一区二区三区免费观看视频 | 免费人成网站在线观看欧美高清| 久久夜色精品国产噜噜av| 久久久久99| 美女国产一区| 欧美日本韩国一区二区三区| 欧美区高清在线| 欧美视频在线观看视频极品| 国产精品久久久久久五月尺| 国产伦精品一区二区三区视频孕妇| 国产精品乱码人人做人人爱| 国产精品男gay被猛男狂揉视频| 国产欧美日韩精品专区| 国内精品伊人久久久久av影院 | 欧美自拍偷拍午夜视频| 久久精品一区四区| 亚洲欧美综合v| 欧美在线3区| 欧美理论电影在线播放| 国产一本一道久久香蕉| 亚洲免费观看| 久久综合色一综合色88| 亚洲精品在线观看免费| 欧美一区二区三区在线看| 欧美高清视频| 国语自产精品视频在线看| 日韩视频精品在线观看| 久久欧美肥婆一二区| 99精品99| 麻豆精品国产91久久久久久| 国产精品免费电影| 亚洲乱码视频| 免费欧美日韩| 亚洲免费一级电影| 欧美日韩999| 亚洲精品麻豆| 美女999久久久精品视频| 亚洲影院一区| 欧美日韩在线另类| 亚洲精选在线观看| 免费成人高清视频| 午夜综合激情| 国产精品国产三级国产普通话99| 91久久久精品| 欧美电影免费观看网站| 欧美中文字幕久久| 国产欧美一区二区三区久久| 夜夜嗨av一区二区三区中文字幕| 欧美v国产在线一区二区三区| 欧美一区二视频| 国产精品一区二区久久国产| 亚洲一区二区精品| 日韩视频一区二区三区在线播放| 嫩草国产精品入口| 亚洲高清中文字幕| 欧美成人乱码一区二区三区| 久久久久9999亚洲精品| 国产一区二区剧情av在线| 午夜一区不卡| 亚洲自拍偷拍麻豆| 国产区精品在线观看| 午夜精品亚洲| 亚洲五月婷婷| 国产精品一区二区你懂的| 午夜精品久久久久久久男人的天堂 | 欧美午夜寂寞影院| 亚洲字幕一区二区| 亚洲一二三四久久| 国产精品天天看| 欧美在线综合视频| 久久狠狠亚洲综合| 雨宫琴音一区二区在线| 欧美成va人片在线观看| 欧美不卡激情三级在线观看| 91久久精品网| 亚洲美女视频| 国产精品久久久久aaaa九色| 亚洲欧美视频在线| 久久高清福利视频| 亚洲第一区在线观看| 亚洲第一区在线观看| 欧美99久久| 亚洲一区一卡| 亚洲欧美一区二区三区在线| 黄色免费成人| 亚洲电影一级黄| 欧美日韩一区二区三| 西瓜成人精品人成网站| 久久精品视频在线看| 亚洲精品免费在线观看| 亚洲伦理自拍| 国产午夜精品视频免费不卡69堂| 久久午夜色播影院免费高清| 美女图片一区二区| 中国成人黄色视屏| 亚洲欧美日韩一区二区三区在线| 黄色亚洲免费| 亚洲精品在线免费| 国产欧美一区二区三区国产幕精品 | 免费观看在线综合| 欧美久久久久| 欧美中文字幕不卡| 欧美~级网站不卡| 亚洲欧美激情视频| 老司机亚洲精品| 亚洲欧美日韩国产一区| 久久五月天婷婷| 亚洲欧美另类在线观看| 麻豆91精品|