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

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://m.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 閱讀(1040) 評論(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>
            亚洲免费在线视频一区 二区| 一区二区三区四区国产| 亚洲精品少妇| 欧美顶级少妇做爰| 欧美高清视频| 亚洲国产影院| 久久婷婷国产综合精品青草| 久久在线免费观看| 欧美成在线观看| 日韩午夜精品视频| 亚洲免费成人| 欧美亚洲一区在线| 久久久久久久91| 欧美sm极限捆绑bd| 亚洲啪啪91| 一区二区高清视频| 久久精品国产久精国产爱| 久久久国产成人精品| 欧美va亚洲va日韩∨a综合色| 欧美日韩成人一区二区| 国产精品亚洲а∨天堂免在线| 黄色成人免费观看| 在线一区日本视频| 久久er99精品| 亚洲激情在线激情| 欧美影视一区| 欧美激情中文不卡| 国外成人在线视频网站| 日韩一区二区免费看| 久久国产精品一区二区三区四区| 老牛影视一区二区三区| 亚洲老司机av| 久久综合一区二区| 国产女主播一区二区| 久久久噜噜噜久久中文字幕色伊伊 | 久久先锋影音| 欧美日韩少妇| 黄色亚洲网站| 亚洲午夜久久久久久久久电影网| 久热精品视频在线观看| 一区二区三区四区蜜桃| 欧美激情小视频| 亚洲高清av| 久久亚洲风情| 午夜精品久久久久久99热| 欧美日产国产成人免费图片| 激情懂色av一区av二区av| 亚洲欧美电影在线观看| 亚洲国产精彩中文乱码av在线播放| 亚洲一区二区三区影院| 欧美日本韩国在线| 亚洲黑丝一区二区| 欧美国产日韩xxxxx| 久久婷婷久久| 国产真实乱子伦精品视频| 午夜精品国产精品大乳美女| 91久久精品国产91久久性色tv | 亚洲免费精品| 欧美激情久久久| 亚洲精品老司机| 亚洲国产成人在线播放| 欧美一区二区精美| 亚洲欧美日韩一区二区| 亚洲美女网站| 欧美日韩亚洲一区二区三区在线| 亚洲伦理在线免费看| 亚洲日本免费电影| 欧美 日韩 国产 一区| 久久av在线看| 激情综合在线| 欧美黄色影院| 欧美日韩国产综合一区二区| 一区二区国产精品| 国产精品99久久99久久久二8| 国产精品久久久久久久9999| 亚洲自拍啪啪| 午夜精品久久久久久久久久久久久 | 老司机免费视频一区二区| 亚洲国产成人av| 亚洲高清在线| 欧美日韩国产高清视频| 午夜激情亚洲| 久久频这里精品99香蕉| 亚洲精品一区二区三区樱花| 9人人澡人人爽人人精品| 国产精品一区一区三区| 久久久亚洲综合| 欧美精品久久一区| 午夜精品久久久久久久久| 欧美一区二区三区久久精品| 亚洲国产成人久久| 日韩视频在线一区二区| 国产精品美女999| 久久久之久亚州精品露出| 免费久久精品视频| 亚洲国产日韩欧美| 一区二区激情小说| 国内精品美女在线观看| 欧美激情中文字幕一区二区 | 亚洲美女中文字幕| 国产酒店精品激情| 亚洲福利视频网站| 国产精品三上| 欧美激情精品久久久久久免费印度| 欧美国产综合一区二区| 午夜精品久久久久影视 | 亚洲视频日本| 欧美一区二区大片| 亚洲特级毛片| 久久嫩草精品久久久精品| 亚洲无吗在线| 亚洲成人在线视频播放| 亚洲午夜精品福利| 亚洲欧美精品在线| 日韩亚洲国产欧美| 久久久久久电影| 亚洲免费在线电影| 欧美国产激情| 欧美88av| 精品999日本| 亚洲一区二区成人在线观看| 亚洲区在线播放| 久久久久国产精品午夜一区| 亚洲在线播放电影| 欧美久久久久久久久久| 一区二区三区四区五区视频| 久久久久久97三级| 久久精视频免费在线久久完整在线看| 欧美日本三区| 亚洲精品久久久久中文字幕欢迎你| 黄色在线一区| 香蕉av福利精品导航| 欧美亚洲综合在线| 国产精品美女黄网| 亚洲一级在线观看| 欧美一区成人| 国产亚洲精品激情久久| 亚洲欧美日韩中文在线制服| 校园春色综合网| 国产欧美va欧美va香蕉在| 一区二区三区日韩精品| 亚洲私拍自拍| 欧美亚州一区二区三区 | 香蕉视频成人在线观看| 国产精品成人一区二区三区吃奶 | 久久国产精品黑丝| 欧美在线视频二区| 国产区精品在线观看| 亚久久调教视频| 久久久综合香蕉尹人综合网| 黑人一区二区三区四区五区| 久久久99国产精品免费| 欧美福利视频| 中文在线一区| 国产欧美一区二区精品忘忧草| 欧美一区二区三区在线看 | 亚洲欧美日韩网| 久久久久久久久伊人| 在线日韩av| 免费观看成人鲁鲁鲁鲁鲁视频| 久久这里有精品15一区二区三区| 国内精品模特av私拍在线观看| 久久久久se| 91久久精品一区| 亚洲男人的天堂在线观看| 国产在线播放一区二区三区| 久久视频在线视频| 9人人澡人人爽人人精品| 久久精品国产亚洲5555| 亚洲第一区在线| 欧美日韩综合精品| 久久国产精品久久w女人spa| 亚洲人成人77777线观看| 欧美亚洲一区二区在线| 亚洲国产免费| 欧美深夜福利| 久久久人成影片一区二区三区观看 | 在线视频你懂得一区二区三区| 久久激情网站| 99综合电影在线视频| 国产婷婷色综合av蜜臀av| 久热精品视频在线| 亚洲午夜久久久久久久久电影院| 美女精品自拍一二三四| 亚洲午夜未删减在线观看| 国产日产欧美a一级在线| 欧美黄免费看| 久久国产精品久久久| 亚洲手机在线| 91久久嫩草影院一区二区| 久久久久久久高潮| 亚洲一区二区三区乱码aⅴ| 伊人久久噜噜噜躁狠狠躁 | 日韩视频一区二区三区在线播放| 亚洲淫片在线视频| 激情另类综合| 国产欧美精品一区| 欧美小视频在线| 六月丁香综合| 午夜精品网站|