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

posts - 7,comments - 3,trackbacks - 0

1099. Work Scheduling

Time Limit: 0.5 second
Memory Limit: 16 MB
There is certain amount of night guards that are available to protect the local junkyard from possible junk robberies. These guards need to scheduled in pairs, so that each pair guards at different night. The junkyard CEO ordered you to write a program which given the guards characteristics determines the maximum amount of scheduled guards (the rest will be fired). Please note that each guard can be scheduled with only one of his colleagues and no guard can work alone.

Input

The first line of the input contains one number N ≤ 222 which is the amount of night guards. Unlimited number of lines consisting of unordered pairs (ij) follow, each such pair means that guard #i and guard #j can work together, because it is possible to find uniforms that suit both of them (The junkyard uses different parts of uniforms for different guards i.e. helmets, pants, jackets. It is impossible to put small helmet on a guard with a big head or big shoes on guard with small feet). The input ends with Eof.

Output

You should output one possible optimal assignment. On the first line of the output write the even number C, the amount of scheduled guards. Then output C/2 lines, each containing 2 integers (ij) that denote that i and j will work together.

Sample

inputoutput
3
1 2
2 3
1 3
2
1 2
Problem Author: Jivko Ganev



模板題.....一般圖匹配主要看模板,剩下的就是自己YY建圖了.....

模板:
#include <cstdio>
#include 
<cstring>
#include 
<algorithm>
#include 
<iostream>
#define MAXN 256
using namespace std;

struct Graph
{
    
bool mat[MAXN + 1][MAXN + 1];
    
int n;

    
bool inque[MAXN + 1];
    
int que[MAXN], head, tail;

    
int match[MAXN + 1], father[MAXN + 1], base[MAXN + 1];

    
void init(int _n)
    {
        n 
= _n;
        
for (int i = 1; i <= n; ++i)
        {
            match[i] 
= 0;
            
for (int j = 1; j <= n; ++j)
                mat[i][j] 
= false;
        }
    }

    
int pop()
    {
        
return que[head++];
    }

    
void push(int x)
    {
        que[tail
++= x;
        inque[x] 
= true;
    }

    
void add_edge(int a, int b)
    {
        mat[a][b] 
= mat[b][a] = true;
    }

    
int inpath[MAXN + 1];
    
static int pcnt;

    
int find_ancestor(int u, int v)
    {
        
++pcnt;
        
while (u)
        {
            u 
= base[u];
            inpath[u] 
= pcnt;
            u 
= father[match[u]];
        }

        
while (true)
        {
            v 
= base[v];
            
if (inpath[v] == pcnt)
                
return v;
            v 
= father[match[v]];
        }
    }

    
int inblossom[MAXN + 1];
    
static int bcnt;

    
void reset(int u, int anc)
    {
        
while (u != anc)
        {
            
int v = match[u];
            inblossom[
base[v]] = bcnt;
            inblossom[
base[u]] = bcnt;
            v 
= father[v];
            
if (base[v] != anc) father[v] = match[u];
            u 
= v;
        }
    }

    
void contract(int u, int v)
    {
        
int anc = find_ancestor(u, v);
        
++bcnt;
        reset(u, anc);
        reset(v, anc);
        
if (base[u] != anc) father[u] = v;
        
if (base[v] != anc) father[v] = u;
        
for (int i = 1; i <= n; ++i)
            
if (inblossom[base[i]] == bcnt)
            {
                
base[i] = anc;
                
if (!inque[i]) push(i);
            }
    }

    
int find_augment(int start)
    {
        
for (int i = 1; i <= n; ++i)
        {
            father[i] 
= 0;
            inque[i] 
= false;
            
base[i] = i;
        }
        head 
= 0, tail = 0, push(start);
        
while (head < tail)
        {
            
int u = pop();
            
for (int v = 1; v <= n; ++v)
                
if (mat[u][v] && base[v] != base[u] && match[v] != u)
                {
                    
if (v == start || (match[v] && father[match[v]]))
                        contract(u, v);
                    
else
                    {
                        
if (father[v] == 0)
                        {
                            
if (match[v])
                            {
                                push(match[v]);
                                father[v] 
= u;
                            }
                            
else
                            {
                                father[v] 
= u;
                                
return v;
                            }
                        }
                    }
                }
        }
        
return 0;
    }

    
void augment(int finish)
    {
        
int u = finish, v, w;
        
while (u)
        {
            v 
= father[u];
            w 
= match[v];
            match[u] 
= v;
            match[v] 
= u;
            u 
= w;
        }
    }

    
int graph_max_match()
    {
        
int ans = 0;
        
for (int i = 1; i <= n; ++i)
            
if (match[i] == 0)
            {
                
int finish = find_augment(i);
                
if (finish)
                {
                    augment(finish);
                    ans 
+= 2;
                }
            }
        
return ans;
    }
} g;

int Graph :: bcnt = 0, Graph :: pcnt = 0;

int main()
{
    
int n;
    scanf(
"%d"&n);
    g.init(n);
    
int a, b;
    
while (scanf("%d%d"&a, &b) != EOF)
        g.add_edge(a, b);
    printf(
"%d\n", g.graph_max_match());
    
for (int i = 1; i <= n; ++i)
        
if (g.match[i])
        {
            printf(
"%d %d\n", i, g.match[i]);
            g.match[g.match[i]] 
= 0;
        }
    
return 0;
}

posted on 2011-10-15 22:16 LLawliet 閱讀(305) 評論(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久久精品国产91久久| 欧美黄在线观看| 国产精品啊啊啊| 欧美高清视频一区二区| 久久久国产一区二区三区| 亚洲欧美日韩在线不卡| 中文亚洲视频在线| 99riav国产精品| 一区二区国产日产| 亚洲午夜精品一区二区三区他趣| 亚洲欧洲日本专区| 一区二区三区在线视频播放| 欧美日韩视频在线第一区| 国产在线不卡视频| 国产欧美日韩一级| 国产一区二区视频在线观看| 久久精品水蜜桃av综合天堂| 一区二区三区高清在线| 国产精品欧美日韩一区二区| 一区二区三区国产在线| 国产精品激情| 91久久国产综合久久91精品网站| 黄色免费成人| 欧美看片网站| 亚洲精品五月天| 99精品欧美| 免费日韩av电影| 亚洲欧美日韩区| 欧美精品精品一区| 在线观看一区二区视频| 午夜精品成人在线| 亚洲欧洲在线播放| 欧美丰满少妇xxxbbb| 国产一区二区三区精品久久久| 国产精品久久一区二区三区| 欧美午夜在线一二页| 亚洲黄色一区二区三区| 麻豆成人91精品二区三区| 性久久久久久久久久久久| 欧美日韩在线播放三区四区| 99riav国产精品| 日韩写真视频在线观看| 欧美久色视频| 亚洲一区国产| 久久精品一区二区三区四区 | 欧美影院在线播放| 欧美激情亚洲视频| 欧美国产精品| 亚洲欧美日韩第一区| 亚洲午夜精品国产| 激情久久久久久久| 亚洲国产精品999| 欧美性生交xxxxx久久久| 欧美一区二区三区精品| 久久激情久久| 国产精品99久久久久久宅男 | 亚洲日本在线观看| 欧美日韩国产精品一区二区亚洲| 中文精品视频| 久久人人精品| 亚洲午夜视频在线| 免费亚洲电影在线观看| 亚洲自拍偷拍麻豆| 裸体一区二区三区| 久久久久久久久久久成人| 欧美大片免费久久精品三p| 亚洲欧美日韩第一区| 欧美国产日本| 欧美成人精品激情在线观看| 国产精品素人视频| 一区二区三区国产精华| 日韩亚洲在线| 欧美日韩一区二区在线| 国产一二精品视频| 亚洲美女黄色片| 亚洲欧洲精品成人久久奇米网| 亚洲视频999| 午夜国产欧美理论在线播放 | 一区二区三区国产精品| 一区二区三区在线视频免费观看| 亚洲美女视频在线免费观看| 亚洲国产精品久久人人爱蜜臀| 欧美在线观看一二区| 久久久精品一品道一区| 国产综合色产在线精品| 久久这里有精品15一区二区三区| 久久精品国产精品亚洲综合| 激情亚洲网站| 欧美国内亚洲| 亚洲欧美在线一区二区| 免费久久精品视频| 中文一区字幕| 亚洲国产精品悠悠久久琪琪| 欧美另类高清视频在线| 亚洲在线成人精品| 亚洲成人在线视频播放| 亚洲国产精品123| 欧美午夜理伦三级在线观看| 久久国产精品亚洲va麻豆| 亚洲高清在线| 久久久免费精品| 一区二区三区高清| 亚洲国产日本| 韩国一区二区在线观看| 欧美日韩美女在线观看| 久久阴道视频| 欧美亚洲网站| 亚洲免费在线观看| 亚洲一区二区高清| 一本色道久久加勒比88综合| 亚洲日本一区二区三区| 国产伦精品一区二区三区在线观看 | 亚洲免费久久| 亚洲国产aⅴ天堂久久| 狠狠色狠狠色综合日日五| 国产欧美精品| 国产裸体写真av一区二区| 欧美三级视频在线| 国产精品二区在线观看| 欧美日韩国产精品一区| 欧美日韩免费区域视频在线观看| 男女精品网站| 欧美女同在线视频| 欧美揉bbbbb揉bbbbb| 欧美视频一区二区三区| 国产麻豆午夜三级精品| 国产精品亚洲精品| 国产亚洲精品激情久久| 激情综合色综合久久| 午夜精品久久久久久久99樱桃 | 欧美性大战xxxxx久久久| 亚洲一区二区在线| 欧美成人免费全部观看天天性色| 亚洲高清久久网| 国产亚洲一级| 一个色综合av| 亚洲专区一二三| 国产精品永久免费| 蜜臀久久99精品久久久画质超高清 | 久久精品夜色噜噜亚洲a∨| 噜噜噜在线观看免费视频日韩| 国产欧美91| 欧美在线啊v一区| 欧美阿v一级看视频| 国产日韩欧美在线视频观看| 最新国产の精品合集bt伙计| 亚洲欧美日韩国产综合在线| 美女网站在线免费欧美精品| 日韩一级黄色大片| 奶水喷射视频一区| 亚洲成人直播| 欧美肥婆在线| 美女精品一区| 亚洲经典在线看| 久久久久国产精品人| 久久精品视频网| 一区二区三区成人 | 亚洲综合精品一区二区| 男女激情久久| 亚洲欧洲日产国产网站| 亚洲高清视频一区二区| 欧美成人69av| 亚洲视频一起| 欧美一级专区免费大片| 国内精品久久久久久久果冻传媒| 久久噜噜亚洲综合| 免费91麻豆精品国产自产在线观看| 尤物视频一区二区| 亚洲国产婷婷| 欧美亚男人的天堂| 亚洲欧美视频| 久久美女艺术照精彩视频福利播放| 国内精品视频在线播放| 欧美.www| 国产精品久久久久9999高清| 亚洲欧美日韩久久精品| 亚洲综合清纯丝袜自拍| 国产一区二区毛片| 亚洲精品在线一区二区| 国产精品区一区二区三区| 久久久夜精品| 国产精品高潮久久| 亚洲韩国青草视频| 国产一区999| 亚洲一区二区在线看| 欧美在线免费视频| 日韩亚洲欧美一区二区三区| 亚洲欧美国产制服动漫| 亚洲美女视频在线观看| 久久精品国产亚洲一区二区| 一区二区三区黄色| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲在线成人| 国产精品久久久一区二区三区| 亚洲黄色免费电影| 亚洲精品乱码久久久久久蜜桃麻豆 | 亚洲精品一区二区三区在线观看| 影音先锋久久精品| 久久精品一区二区三区四区| 久久久久久久尹人综合网亚洲|