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

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三区| 久久国产一二区| 国产日韩精品一区二区三区| 久久精品亚洲热| 久久久久久久综合色一本| 在线免费精品视频| 亚洲第一区中文99精品| 蜜桃av一区二区在线观看| 亚洲激情欧美| 一本色道久久综合狠狠躁篇怎么玩| 欧美日韩亚洲一区二区三区在线| 亚洲欧美日韩在线| 亚洲综合大片69999| 很黄很黄激情成人| 亚洲国产欧洲综合997久久| 欧美视频1区| 久久久久久久久蜜桃| 欧美aⅴ99久久黑人专区| 亚洲欧美综合精品久久成人| 久久精品综合| 中日韩高清电影网| 性视频1819p久久| 91久久亚洲| 亚洲女性裸体视频| 亚洲区国产区| 亚洲欧美日韩国产中文在线| 亚洲第一区色| 亚洲欧美三级在线| 日韩视频免费观看| 久久av一区二区三区漫画| 日韩亚洲精品电影| 久久久久久9| 亚洲女同同性videoxma| 免费看黄裸体一级大秀欧美| 午夜欧美电影在线观看| 欧美高清视频一区二区| 久久九九热re6这里有精品| 欧美精品在线视频| 欧美jizz19性欧美| 国产三级欧美三级日产三级99| 亚洲国产日本| 激情综合色综合久久| 亚洲一区二区在线看| aa亚洲婷婷| 欧美成年人在线观看| 欧美在线亚洲在线| 国产精品久在线观看| 亚洲品质自拍| 亚洲国产日韩欧美综合久久| 欧美呦呦网站| 欧美在线观看视频一区二区| 欧美午夜精品理论片a级按摩| 亚洲国产成人久久| 亚洲国产精品悠悠久久琪琪| 久久精品论坛| 久久视频在线看| 国产欧美日韩在线播放| 亚洲一区二区三区四区五区午夜| 国产精品99久久久久久有的能看| 欧美成人精品福利| 欧美国产视频一区二区| 亚洲国产精品综合| 蜜臀99久久精品久久久久久软件| 嫩草影视亚洲| 亚洲电影在线播放| 免费观看成人| 亚洲国产成人tv| 亚洲精品国产精品乱码不99按摩| 美女免费视频一区| 欧美激情第五页| 亚洲日本中文字幕免费在线不卡| 免费看黄裸体一级大秀欧美| 亚洲电影欧美电影有声小说| 亚洲黄色小视频| 欧美精品一区二区三区高清aⅴ| 91久久久久久久久久久久久| 一区二区av在线| 国产精品久久二区二区| 亚洲宅男天堂在线观看无病毒| 久久er精品视频| 伊人婷婷久久| 欧美成人精品在线| aⅴ色国产欧美| 欧美中文日韩| 在线观看国产精品淫| 欧美激情在线观看| 亚洲天堂免费观看| 久久久蜜臀国产一区二区| 亚洲国产精品一区二区www| 欧美精品三级| 亚洲欧美另类综合偷拍| 欧美不卡在线视频| 一区二区三区四区精品| 国产欧美日韩视频在线观看 | 亚洲调教视频在线观看| 国产精品毛片a∨一区二区三区|国 | 亚洲综合色婷婷| 国产手机视频一区二区| 蜜桃av综合| 亚洲专区欧美专区| 欧美高清成人| 欧美一级理论性理论a| 亚洲国产一区二区视频| 国产精品久久久久一区二区三区| 久久狠狠亚洲综合| 一区二区三区高清不卡| 久久字幕精品一区| 亚洲午夜极品| 亚洲国产毛片完整版 | 久久精品免视看| 亚洲精选视频免费看| 久久久天天操| 亚洲欧美日韩一区二区在线| 亚洲国产精品久久久久| 国产日韩专区在线| 欧美日韩一区二区国产| 久久深夜福利| 午夜在线观看欧美| 夜夜嗨av色一区二区不卡| 欧美激情麻豆| 久久精品亚洲精品| 亚洲自拍偷拍色片视频| 亚洲三级免费观看| 激情久久久久久| 国产日韩欧美在线| 欧美少妇一区| 欧美日韩国产不卡| 猛干欧美女孩| 美女啪啪无遮挡免费久久网站| 欧美一区二区精品在线| 亚洲在线播放| 正在播放日韩| 一本色道久久加勒比88综合| 亚洲精品日韩在线观看| 亚洲国产日韩欧美| 亚洲国产成人精品女人久久久 | 小黄鸭精品密入口导航| 亚洲天堂免费观看| 99亚洲一区二区| 99ri日韩精品视频| 日韩一级裸体免费视频| 亚洲免费电影在线观看| 亚洲美女一区| 一本色道久久综合狠狠躁的推荐| 91久久精品日日躁夜夜躁欧美| 1000部精品久久久久久久久| 在线播放亚洲| 亚洲韩国日本中文字幕| 91久久在线| 99伊人成综合| 亚洲一区二区三区在线看| 亚洲欧美日韩成人| 久久er精品视频| 久久九九全国免费精品观看| 久热精品视频在线| 欧美成黄导航| 亚洲人成人99网站| 这里只有精品丝袜| 欧美一级免费视频| 久久影院午夜论| 欧美日韩a区| 国产精品美女久久久久av超清| 国产精品入口夜色视频大尺度 | 国产模特精品视频久久久久 | 欧美日韩1234| 国产精品国产三级国产aⅴ入口| 国产精品一区二区三区观看| 国产在线观看一区| 亚洲三级免费观看| 亚洲欧美日韩久久精品| 久久久欧美一区二区| 亚洲激情黄色| 亚洲免费一级电影| 久久九九免费视频| 欧美日韩成人| 国内成人精品视频| 亚洲精品影院在线观看| 欧美一区二区三区精品| 欧美风情在线观看| 亚洲综合国产激情另类一区| 久久人91精品久久久久久不卡| 欧美女同在线视频| 国产亚洲制服色| 一区二区三区|亚洲午夜| 久久九九精品| 99热免费精品| 看片网站欧美日韩| 国产欧美视频一区二区| 日韩亚洲欧美在线观看| 久久久国产一区二区三区| 亚洲乱码一区二区| 久热re这里精品视频在线6| 国产精品看片你懂得| 日韩一级免费观看| 可以看av的网站久久看| 亚洲在线日韩| 欧美日韩一区二区三区在线视频| 亚洲高清中文字幕| 久久久精品一区|