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

POI 2001 Peaceful Commission 2-SAT問題

The Public Peace Commission should be legislated in Parliament of The Democratic Republic of Byteland according to The Very Important Law. Unfortunately one of the obstacles is the fact that some deputies do not get on with some others.

The Commission has to fulfill the following conditions:

  • Each party has exactly one representative in the Commission,
  • If two deputies do not like each other, they cannot both belong to the Commission.

Each party has exactly two deputies in the Parliament. All of them are numbered from 1 to 2n. Deputies with numbers 2i-1 and 2i belong to the i-th party .

Task

Write a program, which:

  • reads from the text file SPO.IN the number of parties and the pairs of deputies that are not on friendly terms,
  • decides whether it is possible to establish the Commission, and if so, proposes the list of members,
  • writes the result in the text file SPO.OUT.

Input

In the first line of the text file SPO.IN there are two non-negative integers n and m. They denote respectively: the number of parties, 1 <= n <= 8000, and the number of pairs of deputies, who do not like each other, 0 <= m <=2 0000. In each of the following m lines there is written one pair of integers a and b, 1 <= a < b <= 2n, separated by a single space. It means that the deputies a and b do not like each other.

There are multiple test cases. Process to end of file.

Output

The text file SPO.OUT should contain one word NIE (means NO in Polish), if the setting up of the Commission is impossible. In case when setting up of the Commission is possible the file SPO.OUT should contain n integers from the interval from 1 to 2n, written in the ascending order, indicating numbers of deputies who can form the Commission. Each of these numbers should be written in a separate line. If the Commission can be formed in various ways, your program may write any of them.

Sample Input

3 2
1 3
2 4

Sample Output

1
4
5
   最近看了2篇關于2-SAT問題的IOI論文,對2-SAT問題的O(m)時間復雜度的解法也有了一定的了解,找了道POI 2001的題來做,在WA了無數次之后終于過了,跑了1.44s,效率還可以。
2篇論文分別是<<由對稱性解2-SAT問題>>和<<2-SAT解法淺析>>。
//2-SAT問題
//求出所有強連通分量,如果有矛盾點同處于一個連通分量則無解
//縮點,將原圖反向建立DAG圖
//按拓撲排序著色,找一個未著色點x,染成紅色
//將與x矛盾的頂點及其子孫染為藍色
//直到所有頂點均被染色,紅色即為2-SAT的一組解
#include <iostream>
#include 
<vector>
#include 
<queue>
using namespace std;

const int MAXN = 16010;//2*8000
char color[MAXN];//染色
bool visit[MAXN];
queue
<int> q1,q2;
vector
< vector<int> > adj; //原圖
vector< vector<int> > radj;//逆向圖
vector< vector<int> > dag; //縮點后的逆向DAG圖
int n,m,cnt,id[MAXN],order[MAXN],ind[MAXN];//強連通分量,訪問順序,入度

void dfs(int u){
    visit[u]
=true;
    
int i,len=adj[u].size();
    
for(i=0;i<len;i++)
        
if(!visit[adj[u][i]])
            dfs(adj[u][i]);
    order[cnt
++]=u;
}

void rdfs(int u){
    visit[u]
=true;
    id[u]
=cnt;
    
int i,len=radj[u].size();
    
for(i=0;i<len;i++)
        
if(!visit[radj[u][i]])
            rdfs(radj[u][i]);
}

void korasaju(){
    
int i;
    memset(visit,
false,sizeof(visit));
    
for(cnt=0,i=1;i<=2*n;i++)
        
if(!visit[i]) dfs(i);
    memset(id,
0,sizeof(id));
    memset(visit,
false,sizeof(visit));
    
for(cnt=0,i=2*n-1;i>=0;i--)
        
if(!visit[order[i]])
            cnt
++,rdfs(order[i]);
}

bool solvable(){
    
for(int i=1;i<=n;i++)
        
if(id[2*i-1]==id[2*i])
            
return false;
    
return true;
}

void topsort(){
    
int i,j,len,now,p,pid;    
    
while(!q1.empty()){
        now
=q1.front();
        q1.pop();
        
if(color[now]!=0continue ;
        color[now]
='R';
        ind[now]
=-1;
        
for(i=1;i<=2*n;i++){
            
if(id[i]==now){
                p
=(i%2)?i+1:i-1;
                pid
=id[p];                        
                q2.push(pid);
                
while(!q2.empty()){
                    pid
=q2.front();
                    q2.pop();
                    
if(color[pid]=='B'continue ;            
                    color[pid]
='B';
                    
int len=dag[pid].size();
                    
for(j=0;j<len;j++)
                        q2.push(dag[pid][j]);
                }

            }

        }

        len
=dag[now].size();
        
for(i=0;i<len;i++){
            ind[dag[now][i]]
--;
            
if(ind[dag[now][i]]==0) q1.push(dag[now][i]);        
        }

    }

}

int main(){
    
int i,j,x,y,xx,yy,len;
    
while(scanf("%d %d",&n,&m)!=EOF){
        adj.assign(
2*n+1,vector<int>());
        radj.assign(
2*n+1,vector<int>());
        
for(i=0;i<m;i++){
            scanf(
"%d %d",&x,&y);
            xx
=(x%2)?x+1:x-1;
            yy
=(y%2)?y+1:y-1;
            adj[x].push_back(yy);
            adj[y].push_back(xx);
            radj[yy].push_back(x);
            radj[xx].push_back(y);
        }

        korasaju();
        
if(!solvable()) puts("NIE");
        
else{
            dag.assign(cnt
+1,vector<int>());
            memset(ind,
0,sizeof(ind));
            memset(color,
0,sizeof(color));
            
for(i=1;i<=2*n;i++){
                len
=adj[i].size();
                
for(j=0;j<len;j++)
                    
if(id[i]!=id[adj[i][j]]){
                        dag[id[adj[i][j]]].push_back(id[i]);
                        ind[id[i]]
++;
                    }

            }

            
for(i=1;i<=cnt;i++)
                
if(ind[i]==0) q1.push(i);
            topsort();
            
for(i=1;i<=n;i++){
                
if(color[id[2*i-1]]=='R') printf("%d\n",2*i-1);
                
else printf("%d\n",2*i);
            }

        }

    }

    
return 0;
}

posted on 2009-06-07 18:59 極限定律 閱讀(1193) 評論(1)  編輯 收藏 引用 所屬分類: ACM/ICPC

評論

# re: POI 2001 Peaceful Commission 2-SAT問題 2014-05-05 12:35 zzhhbyt

您用的求scc的算法應該是叫做kosaraju而不是korasaju吧?  回復  更多評論   

<2009年6月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

導航

統計

常用鏈接

留言簿(10)

隨筆分類

隨筆檔案

友情鏈接

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲一区二区视频| 午夜精品久久久久久久久久久久 | 亚洲国产另类 国产精品国产免费| 先锋a资源在线看亚洲| 亚洲午夜久久久久久久久电影院| 国产精品久久久久久久久免费樱桃 | 日韩网站在线观看| 亚洲精品中文字幕有码专区| 欧美日韩在线看| 欧美一区成人| 久久精品国产v日韩v亚洲| 1000部精品久久久久久久久| 亚洲高清av| 欧美日韩一区综合| 午夜在线观看欧美| 久久久成人网| 宅男精品导航| 欧美一区二区三区喷汁尤物| 一区二区自拍| 99视频精品免费观看| 国产日韩在线视频| 亚洲第一色在线| 国产精品久久久久久久久久ktv| 小黄鸭精品aⅴ导航网站入口| 久久er精品视频| 99精品国产99久久久久久福利| 亚洲一区二区三区四区五区午夜 | 亚洲欧洲一区二区三区久久| 99国产精品视频免费观看| 国产伦精品一区二区三区四区免费| 久久久久国产一区二区| 免费久久99精品国产| 亚洲欧美一区二区三区久久| 久久久99爱| 午夜精品久久久久久久久久久久| 久久精品毛片| 亚洲欧美一区二区激情| 久色婷婷小香蕉久久| 亚洲欧美韩国| 欧美承认网站| 久久亚洲精品中文字幕冲田杏梨| 欧美日本中文字幕| 久热精品在线| 国产精品综合| 99精品视频一区| 亚洲国产成人精品久久| 午夜天堂精品久久久久| 日韩写真视频在线观看| 久久久精品tv| 久久麻豆一区二区| 国产精品看片资源| 亚洲美女91| 99www免费人成精品| 久久人人爽国产| 久久免费高清| 国产一区成人| 性刺激综合网| 久久国产加勒比精品无码| 国产精品久久久久久久免费软件| 亚洲欧洲午夜| 亚洲免费精彩视频| 欧美国产高清| 亚洲高清视频一区| 亚洲日本理论电影| 欧美1区3d| 亚洲激情在线激情| 亚洲精品免费一二三区| 免费观看成人网| 亚洲丰满在线| 亚洲人午夜精品免费| 麻豆精品国产91久久久久久| 美女网站久久| 亚洲激情一区二区三区| 欧美大片91| 亚洲三级影院| 亚洲欧美视频在线观看| 国产精品欧美久久| 亚洲男人影院| 久久资源av| 亚洲欧洲在线看| 欧美另类极品videosbest最新版本 | 亚洲精品精选| 欧美精品一区在线发布| 亚洲看片一区| 欧美有码在线观看视频| 狠狠色综合网站久久久久久久| 欧美专区第一页| 欧美激情无毛| 中文日韩电影网站| 国产午夜精品久久久久久免费视| 久久精品动漫| 亚洲日韩成人| 欧美一级视频一区二区| 国精品一区二区三区| 蜜桃av久久久亚洲精品| 夜色激情一区二区| 久久久久久久成人| 亚洲久久一区| 国产一级久久| 欧美日韩国产成人在线| 香蕉精品999视频一区二区| 六月丁香综合| 亚洲一区免费网站| 亚洲国产精品久久| 国产精品美女诱惑| 麻豆精品传媒视频| 亚洲视频www| 欧美国产精品日韩| 欧美一二区视频| 日韩亚洲综合在线| 国产一区二区三区成人欧美日韩在线观看 | 亚洲人妖在线| 久色成人在线| 午夜精品在线观看| 亚洲精品久久嫩草网站秘色| 国产精品一区二区在线观看不卡| 免费看亚洲片| 久久av一区二区三区漫画| 亚洲美女视频网| 欧美成人激情视频免费观看| 亚洲欧美精品在线观看| 亚洲精华国产欧美| 国产一区二区在线观看免费播放| 欧美日韩播放| 欧美电影免费观看大全| 久久精品国产在热久久| 亚洲免费影视第一页| 日韩视频免费观看| 亚洲第一精品福利| 美女脱光内衣内裤视频久久影院| 亚洲欧美日韩国产一区二区| 一区二区三区国产盗摄| 亚洲区在线播放| 亚洲国产精品va在看黑人| 国内精品美女av在线播放| 国产精品亚洲成人| 国产精品第一页第二页第三页| 欧美国产一区二区在线观看 | 欧美母乳在线| 欧美成人精精品一区二区频| 久久成人国产精品| 欧美在线观看视频| 午夜国产精品视频免费体验区| 一区二区三区免费网站| 在线视频精品一区| 在线视频你懂得一区| 99精品视频免费| 一本色道久久88综合亚洲精品ⅰ| 亚洲精品午夜精品| 日韩视频不卡| 一本色道久久综合精品竹菊 | 欧美ed2k| 欧美激情亚洲激情| 亚洲国产精品一区二区第一页 | 午夜精品一区二区三区电影天堂| 亚洲深夜福利在线| 亚洲在线国产日韩欧美| 亚洲曰本av电影| 久久激情综合| 免费观看在线综合色| 欧美成人首页| 国产精品电影观看| 国产日韩精品一区二区| 怡红院精品视频| 亚洲精选在线| 销魂美女一区二区三区视频在线| 久久gogo国模啪啪人体图| 久久一区二区三区四区五区| 蜜桃av久久久亚洲精品| 91久久精品久久国产性色也91 | 亚洲国产天堂久久国产91| 亚洲人成网站999久久久综合| 日韩视频免费在线| 亚洲一区精品在线| 久久蜜桃资源一区二区老牛| 欧美电影打屁股sp| 国产精品一二三四| 亚洲国产成人av好男人在线观看| 最新成人在线| 欧美伊久线香蕉线新在线| 蜜桃av一区二区| 一区二区三区久久| 久久夜色精品国产| 国产精品成人观看视频国产奇米| 国产色婷婷国产综合在线理论片a| 亚洲第一区色| 亚洲欧美日本视频在线观看| 久久综合久久综合这里只有精品| 91久久久久| 久久国产精品高清| 欧美网站在线| 亚洲国产欧美一区二区三区久久 | 欧美一区二区三区啪啪| 欧美成人有码| 性欧美xxxx大乳国产app| 欧美大片网址| 在线成人av.com| 午夜精品一区二区三区在线视| 亚洲国产va精品久久久不卡综合| 香港成人在线视频|