• <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>

            hrbeuTLt4

            The Accomodation of Students

            TimeLimit: 1 Second   MemoryLimit: 32 Megabyte

            Totalsubmit: 26   Accepted: 9  

            Description

            There are a group of students. Some of them may know each other, while others don't. For example, A and B know each other, B and C know each other. But this may not imply that A and C know each other.

            Now you are given all pairs of students who know each other. Your task is to divide the students into two groups so that any two students in the same group don't know each other.If this goal can be achieved, then arrange them into double rooms. Remember, only paris appearing in the previous given set can live in the same room, which means only known students can live in the same room.

            Calculate the maximum number of pairs that can be arranged into these double rooms.

            Input

            For each data set:
            The first line gives two integers, n and m(1<n<=200), indicating there are n students and m pairs of students who know each other. The next m lines give such pairs.

            Proceed to the end of file.

            Output

            If these students cannot be divided into two groups, print "No". Otherwise, print the maximum number of pairs that can be arranged in those rooms.

            Sample Input

            4 4
            1 2
            1 3
            1 4
            2 3
            6 5
            1 2
            1 3
            1 4
            2 5
            3 6

            Sample Output

            No
            3

            Source

            2008 Asia Harbin Regional Contest Online

            最近一直沒寫blog

            發現二分圖還是不太會做
            這個題是先判斷是不是二分圖,然后求最大匹配
            題意

            有n個學生,有m對人是認識的,每一對認識的人能分到一間房,問能否把n個學生分成兩

            部分,每部分內的學生互不認識,而兩部分之間的學生認識。如果可以分成兩部分,就

            算出房間最多需要多少間,否則就輸出No。

            #include<stdio.h>
            #include
            <string.h>
            #include
            <math.h>
            #define maxn 205
            int n,m;
            int g[maxn][maxn];
            int color[maxn];
            int cx[maxn],cy[maxn];
            int mk[maxn];
            int ans;
            bool flag;
            int path(int u)
            {
                
            int v;
                
            for(v=1; v<=n; v++)
                
            {
                    
            if(g[u][v]&&!mk[v])
                    
            {
                        mk[v]
            =1;
                        
            if(cy[v]==-1||path(cy[v]))
                        
            {
                            cx[u]
            =v;
                            cy[v]
            =u;
                            
            return 1;
                        }

                    }

                }

                
            return 0;
            }

            int match()
            {
                
            int res,i;
                res
            =0;
                memset(cx,
            -1,sizeof(cx));
                memset(cy,
            -1,sizeof(cy));
                
            for(i=1; i<=n; i++)
                    
            if(cx[i]==-1)
                    
            {
                        memset(mk,
            0,sizeof(mk));
                        res
            +=path(i);
                    }

                
            return res;
            }

            void dfs(int u,int col)
            {
                
            int i;
                color[u]
            =col;
                
            for(i=1;i<n;i++)
                    
            if((g[u][i]||g[i][u])&&color[i]==-1&&flag)
                
            {
                    dfs(i,
            1-col);
                }

                
            else if((g[u][i]||g[i][u])&&color[i]==col)
                
            {
                    flag
            =false;
                    
            return;
                }

            }

            int main()
            {
                
            int i,j;
                
            int p1,p2;
                
            while(scanf("%d%d",&n,&m)!=EOF)
                
            {
                    memset(g,
            0,sizeof(g));
                    
            for(i=1; i<=m; i++)
                    
            {
                        scanf(
            "%d%d",&p1,&p2);
                        g[p1][p2]
            =1;
                    }

                    ans
            =0;
                    flag
            =true;
                    memset(color,
            -1,sizeof(color));
                    dfs(
            1,0);
                    
            if (!flag) printf("No\n");
                    
            else 
                    
            {
                        ans
            =match();
                        printf(
            "%d\n",ans);
                    }

                }

                
            return 0;
            }


            //二分圖判斷+最大匹配



             

            posted on 2012-04-24 15:18 jh818012 閱讀(92) 評論(0)  編輯 收藏 引用

            <2025年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            導航

            統計

            常用鏈接

            留言簿

            文章檔案(85)

            搜索

            最新評論

            • 1.?re: poj1426
            • 我嚓,,輝哥,,居然搜到你的題解了
            • --season
            • 2.?re: poj3083
            • @王私江
              (8+i)&3 相當于是 取余3的意思 因為 3 的 二進制是 000011 和(8+i)
            • --游客
            • 3.?re: poj3414[未登錄]
            • @王私江
              0ms
            • --jh818012
            • 4.?re: poj3414
            • 200+行,跑了多少ms呢?我的130+行哦,你菜啦,哈哈。
            • --王私江
            • 5.?re: poj1426
            • 評論內容較長,點擊標題查看
            • --王私江
            97久久国产综合精品女不卡| 国产午夜福利精品久久2021| 久久av免费天堂小草播放| 国产精品九九九久久九九| 国产一区二区精品久久| 久久久久久国产a免费观看不卡| 亚洲国产成人久久综合野外 | 国产麻豆精品久久一二三| 国产精品久久久久影院嫩草 | 久久夜色精品国产噜噜亚洲AV| 国产成人久久精品激情| 久久影视综合亚洲| 久久国产精品成人影院| 无码国内精品久久人妻麻豆按摩| 久久99精品久久久久久久不卡 | 精品国产青草久久久久福利 | 亚洲欧美精品伊人久久| 亚洲欧洲久久久精品| 亚洲国产精品热久久| 99久久精品费精品国产一区二区| 亚洲欧美国产日韩综合久久| 99热精品久久只有精品| MM131亚洲国产美女久久| 人妻少妇精品久久| 国产成人久久精品二区三区| 99久久这里只有精品| 久久精品无码专区免费东京热 | 久久99九九国产免费看小说| 久久高潮一级毛片免费| 国产99久久久国产精品~~牛| 久久99热只有频精品8| 欧美精品久久久久久久自慰| 久久久久人妻一区二区三区 | 中文国产成人精品久久亚洲精品AⅤ无码精品 | 精品综合久久久久久888蜜芽| 久久笫一福利免费导航 | 五月丁香综合激情六月久久| 久久精品成人欧美大片| 99久久综合国产精品免费| 精品久久久久久国产| 久久99久国产麻精品66|