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

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 閱讀(312) 評論(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>
            国产精品夫妻自拍| 性欧美大战久久久久久久久| 在线视频欧美日韩| 一区免费观看| 亚洲欧美国产制服动漫| 日韩亚洲精品视频| 美女999久久久精品视频| 久久精品视频在线播放| 欧美三区视频| 日韩午夜在线| 亚洲精品久久久久久久久久久久久 | 午夜久久电影网| 亚洲网站视频福利| 欧美大片在线看| 欧美国产日本韩| 国内欧美视频一区二区| 亚洲欧美激情一区二区| 亚洲综合色丁香婷婷六月图片| 男人的天堂成人在线| 免费日韩视频| 激情成人在线视频| 欧美影视一区| 久久久夜精品| 精品动漫3d一区二区三区| 欧美一级视频免费在线观看| 欧美一级一区| 国产欧美不卡| 欧美一区二区大片| 久久久久久久综合| 韩国女主播一区二区三区| 欧美有码视频| 久久婷婷激情| 亚洲黄色一区二区三区| 免费成人在线视频网站| 欧美成人午夜77777| 亚洲精品一二三区| 欧美激情一区二区三区在线| 亚洲精品国产系列| 9色精品在线| 国产精品久久久久久久久免费樱桃| 亚洲欧洲美洲综合色网| 亚洲自拍偷拍麻豆| 国产三级精品在线不卡| 久久米奇亚洲| 最新亚洲视频| 午夜久久一区| 一区二区视频免费完整版观看| 久久高清福利视频| 亚洲第一福利视频| 一区二区日本视频| 国产日产欧美精品| 欧美aa国产视频| 99视频一区二区| 久久精品人人做人人爽| 亚洲经典自拍| 国产精品天天摸av网| 亚洲亚洲精品三区日韩精品在线视频| 欧美日韩中文在线观看| 国产精品美女一区二区| 亚洲免费在线观看| 欧美xart系列高清| 亚洲欧美一区二区三区久久| 国内精品美女在线观看| 欧美激情第一页xxx| 亚洲欧美激情视频在线观看一区二区三区| 久久乐国产精品| 一区二区激情视频| 国模一区二区三区| 欧美大片免费看| 中文av字幕一区| 久久都是精品| 亚洲美女毛片| 国产日本精品| 欧美成人资源网| 亚洲欧美日韩国产成人精品影院 | 欧美精品v日韩精品v国产精品| 亚洲清纯自拍| 亚洲精品四区| 怡红院av一区二区三区| 欧美日韩精品久久| 亚洲欧美中文字幕| 欧美国产日本在线| 午夜精品福利视频| 精品动漫一区二区| 欧美涩涩网站| 亚洲欧美三级在线| 亚洲国产高潮在线观看| 午夜宅男欧美| 亚洲伦理在线| 国内精品视频一区| 国产精品国产成人国产三级| 久久精品首页| 亚洲视频一区在线观看| 欧美在线播放一区二区| 亚洲国产黄色| 国产日产高清欧美一区二区三区| 欧美大片专区| 久久永久免费| 欧美在线观看一区二区| 一本高清dvd不卡在线观看| 欧美激情性爽国产精品17p| 亚洲欧美日韩在线观看a三区 | 一区二区在线观看av| 国产精品地址| 欧美日产在线观看| 美国十次成人| 久久性色av| 久久久国产精品亚洲一区| 在线一区二区三区四区| 99精品久久| 亚洲伦理在线| 亚洲国产高清在线观看视频| 麻豆乱码国产一区二区三区| 欧美一级欧美一级在线播放| 亚洲一区二区三区777| 一区二区av| 亚洲人妖在线| 亚洲一区bb| 亚洲午夜精品网| 99视频一区二区| 一区二区不卡在线视频 午夜欧美不卡'| 亚洲国产精品久久久久婷婷884| 激情综合在线| **网站欧美大片在线观看| 国产一区久久久| 国产综合色一区二区三区| 国产欧美一区二区三区在线老狼 | 亚洲精品一品区二品区三品区| 在线观看日韩欧美| 91久久久亚洲精品| 亚洲美女黄色片| 亚洲精品四区| 欧美影视一区| 久久免费观看视频| 农村妇女精品| 亚洲黄色高清| 99视频精品全国免费| 亚洲综合丁香| 久久久国产亚洲精品| 久久精品99无色码中文字幕| 久久gogo国模裸体人体| 久久男人av资源网站| 欧美第一黄色网| 欧美特黄a级高清免费大片a级| 国产精品久久久久久户外露出| 国产精品欧美在线| 在线观看欧美视频| 亚洲一区二区在线视频| 久久av一区二区三区| 猛男gaygay欧美视频| 欧美电影在线| 一本久久a久久免费精品不卡| 一区二区三区国产盗摄| 欧美一区二区三区免费大片| 午夜久久电影网| 欧美视频亚洲视频| 狠狠操狠狠色综合网| 亚洲精选成人| 欧美一区激情| 亚洲激情视频在线观看| 亚洲欧美不卡| 欧美日韩在线直播| 影音先锋久久| 午夜国产欧美理论在线播放| 老司机aⅴ在线精品导航| 亚洲精品人人| 久久国产免费| 欧美日韩中字| 在线国产亚洲欧美| 亚洲资源在线观看| 欧美福利电影网| 亚洲综合社区| 欧美日韩国产不卡在线看| 伊人成人开心激情综合网| 亚洲香蕉网站| 亚洲第一精品夜夜躁人人躁| 亚洲欧美一区二区三区极速播放 | 国产欧美丝祙| 一本色道久久88精品综合| 久久久999国产| 一区二区三区欧美激情| 欧美在线欧美在线| 国产情侣久久| 亚洲一区二区三区成人在线视频精品| 欧美91大片| 欧美中文字幕视频| 国产精品久久久久久影视| 亚洲激情自拍| 亚洲国产另类精品专区| 久久久久看片| 国产日韩欧美高清| 亚洲一区二区四区| 亚洲日韩欧美一区二区在线| 久久亚洲精品视频| 国产精品jizz在线观看美国 | 99re6热在线精品视频播放速度 | 欧美国产日韩在线| 久久久精品动漫| 国产精品视频1区| 久久九九热免费视频|