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

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>
            一区二区不卡在线视频 午夜欧美不卡在 | 亚洲韩日在线| 久久蜜桃精品| 久久综合色婷婷| 亚洲巨乳在线| 9l视频自拍蝌蚪9l视频成人| 国产精品久久久久77777| 午夜精品久久久久久久99热浪潮| 亚洲一区二区免费视频| 国产亚洲福利社区一区| 欧美高清视频在线观看| 欧美另类69精品久久久久9999| 亚洲无线视频| 久久超碰97人人做人人爱| 亚洲高清免费在线| 宅男噜噜噜66国产日韩在线观看| 国产麻豆午夜三级精品| 欧美大色视频| 国产伦一区二区三区色一情| 免费在线日韩av| 欧美日韩ab片| 久久综合久久久久88| 欧美日韩不卡| 六月丁香综合| 国产精品久久二区| 女生裸体视频一区二区三区| 欧美三级视频| 欧美va亚洲va国产综合| 国产精品日韩电影| 亚洲国产精品久久| 国产亚洲精品成人av久久ww| 亚洲精品美女久久久久| 国产亚洲精品自拍| aa日韩免费精品视频一| 亚洲破处大片| 欧美一级专区免费大片| 亚洲一二三区精品| 欧美成人按摩| 老司机一区二区三区| 国产精品久久久久久久9999| 欧美激情一二区| 激情婷婷久久| 欧美一区二区三区四区视频 | 国产伦精品一区二区三区免费| 亚洲国产1区| 在线观看视频欧美| 久久大逼视频| 欧美在线亚洲在线| 国产精品久久久久三级| 亚洲美女毛片| 亚洲精品一区二区三区四区高清| 久久9热精品视频| 午夜欧美精品久久久久久久| 欧美日韩亚洲高清| 亚洲国产成人精品女人久久久| 在线不卡a资源高清| 久久精品国亚洲| 久久精品国产久精国产爱| 国产精品久久久久久久久久免费看| 亚洲国产精品福利| 亚洲精品人人| 欧美伦理91i| 日韩视频三区| 亚洲在线一区二区三区| 欧美视频日韩视频| 亚洲视频大全| 午夜视黄欧洲亚洲| 国产亚洲成精品久久| 欧美一级视频免费在线观看| 久久精品综合一区| 一区二区三区我不卡| 久久久综合网站| 亚洲电影在线| 久久国产高清| 亚洲国产精品成人综合色在线婷婷 | 亚洲一区二区三区免费在线观看| 欧美精品一区二区久久婷婷| 亚洲激情在线观看视频免费| 一本久久综合| 国产精品成人免费| 亚洲女性喷水在线观看一区| 欧美中文字幕视频| 精品999在线播放| 久久综合久久美利坚合众国| 亚洲欧洲日本专区| 亚洲一区999| 国产视频一区欧美| 免播放器亚洲一区| 日韩亚洲欧美精品| 久久av一区二区三区| 影音先锋亚洲精品| 欧美日韩一区二区三区在线| 亚洲欧美日韩区| 亚洲福利国产精品| 亚洲欧美综合| 亚洲国产高清一区| 欧美日韩综合另类| 久久国产日本精品| 亚洲精品国产精品国自产观看| 性娇小13――14欧美| 在线免费观看一区二区三区| 欧美日韩在线播放| 久久影视精品| 亚洲一区二区在线看| 欧美激情bt| 久久精品30| 这里只有精品视频在线| 伊人男人综合视频网| 国产精品白丝av嫩草影院| 久久久噜噜噜久久久| 一区二区av| 亚洲国产精品尤物yw在线观看| 性欧美大战久久久久久久免费观看 | 久久亚洲精选| 亚洲一区二区三区四区五区午夜| 欧美高清一区| 久久先锋资源| 欧美一区二区三区精品电影| 亚洲精品免费在线| 伊人久久婷婷色综合98网| 国产精品免费福利| 欧美日韩中文| 欧美激情一区二区三区成人| 久久久999国产| 亚洲欧美成aⅴ人在线观看| 亚洲理论电影网| 亚洲高清视频在线观看| 久久综合精品一区| 久久久精品视频成人| 欧美一区二区三区久久精品 | 韩日欧美一区二区三区| 欧美亚州一区二区三区| 欧美精品1区2区3区| 欧美高清视频一区二区三区在线观看 | 另类春色校园亚洲| 久久精品国产99国产精品| 香蕉亚洲视频| 欧美一区二区成人| 亚洲欧美日本日韩| 亚洲淫性视频| 亚洲欧美日韩一区二区在线| 亚洲一区二区在线| 亚洲影视综合| 亚洲欧美综合v| 性欧美激情精品| 欧美一区二区三区在线| 欧美中文字幕在线播放| 久久精品青青大伊人av| 久久久久国产精品麻豆ai换脸| 久久精品视频在线| 麻豆av一区二区三区久久| 欧美xx视频| 亚洲精品乱码久久久久| 中文久久乱码一区二区| 午夜精品国产| 久久久久国产精品一区三寸| 99精品视频免费全部在线| 亚洲精品免费观看| 99re6这里只有精品视频在线观看| 亚洲人体影院| 亚洲一区精品在线| 久久成人免费| 欧美精品日韩综合在线| 欧美色大人视频| 国产亚洲精品久久久| 在线日韩视频| 中文久久乱码一区二区| 性欧美长视频| 欧美大片在线观看一区| 一本色道久久综合亚洲精品不卡| 亚洲欧美日韩在线综合| 久久最新视频| 国产精品第一区| 在线观看中文字幕不卡| 中文在线资源观看网站视频免费不卡| 亚洲欧美精品在线观看| 女生裸体视频一区二区三区| av成人福利| 久久久久久夜| 国产精品国产馆在线真实露脸| 国模私拍视频一区| 一区二区三区视频观看| 久久全球大尺度高清视频| 亚洲精品欧美日韩| 久久精品99无色码中文字幕 | 久久久久久久999| 欧美日本高清视频| 极品少妇一区二区三区| 亚洲免费在线电影| 亚洲二区视频| 久久福利影视| 国产精品女人毛片| 夜夜精品视频| 亚洲第一精品久久忘忧草社区| 午夜精品久久久99热福利| 欧美日韩成人一区二区三区| 在线观看成人av| 久久久国产精品一区二区三区| 一本大道久久精品懂色aⅴ| 欧美1区2区|