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

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>
            激情亚洲网站| 亚洲观看高清完整版在线观看| 亚洲第一福利社区| 可以看av的网站久久看| 久久青草久久| 91久久在线视频| 亚洲黄色有码视频| 欧美人与性动交a欧美精品| 亚洲最新视频在线播放| 99热精品在线观看| 国产麻豆精品在线观看| 久久久久久成人| 男人的天堂成人在线| 亚洲美女淫视频| 一区二区欧美在线| 国产日韩精品久久| 欧美激情一区二区三级高清视频| 欧美国产精品日韩| 亚洲欧美国产视频| 久久婷婷av| 亚洲天堂av综合网| 欧美专区在线播放| av成人国产| 亚洲欧美国产毛片在线| 亚洲第一精品影视| 99热这里只有成人精品国产| 国产区日韩欧美| 亚洲黄页一区| 国产色综合久久| 亚洲国产免费看| 国产日韩精品一区二区| 亚洲第一精品夜夜躁人人爽| 国产精品久久久久久久久久三级| 久久精品一区二区| 欧美视频免费在线| 免费在线成人| 国产精品亚洲不卡a| 亚洲国产精品一区二区第四页av| 国产欧美91| 亚洲美女毛片| 亚洲高清在线播放| 亚洲欧美日韩爽爽影院| 夜色激情一区二区| 蜜桃av综合| 久久久亚洲国产天美传媒修理工| 欧美精选午夜久久久乱码6080| 久久精品人人做人人爽电影蜜月| 欧美日韩免费观看一区三区 | 看欧美日韩国产| 亚洲欧美中文日韩v在线观看| 欧美大片免费观看| 久久婷婷国产麻豆91天堂| 欧美天堂在线观看| 亚洲国产日韩一级| 亚洲第一伊人| 欧美在线综合视频| 欧美一区国产一区| 国产精品老牛| 在线视频中文亚洲| 亚洲午夜国产一区99re久久| 免费不卡中文字幕视频| 久热国产精品视频| 韩国一区电影| 性欧美长视频| 久久久久久**毛片大全| 国产欧美亚洲一区| 午夜亚洲视频| 久久本道综合色狠狠五月| 国产精品免费小视频| 亚洲色图制服丝袜| 欧美一区1区三区3区公司| 国产精品视频免费| 亚洲欧美国产精品va在线观看| 亚洲欧美日韩在线综合| 国产精品国产| 校园激情久久| 久久亚洲视频| 亚洲区第一页| 欧美破处大片在线视频| 亚洲精选在线| 亚洲欧美激情视频| 国产一区二区欧美| 久久免费视频一区| 亚洲国产欧美一区二区三区久久| 亚洲美女在线观看| 国产精品欧美日韩| 欧美一区激情| 亚洲电影免费观看高清完整版在线观看| 亚洲国产精品一区二区第一页| 欧美成人综合在线| 一区二区免费看| 久久久久久久久综合| 亚洲国产91| 国产精品国产三级国产专播品爱网| 宅男在线国产精品| 久久综合一区| 日韩一级精品| 国产亚洲激情在线| 欧美肥婆在线| 亚洲女人小视频在线观看| 女仆av观看一区| 亚洲一区二区三区四区五区黄| 国产精品揄拍500视频| 久久全球大尺度高清视频| 亚洲区免费影片| 久久国产精品久久久久久久久久| 亚洲国产精品ⅴa在线观看 | 久久婷婷一区| 99精品免费视频| 久久一区精品| 亚洲一区二区三| 在线日韩一区二区| 国产精品一区二区久久久久| 久久综合狠狠综合久久激情| 亚洲深夜av| 亚洲激情第一页| 久久久青草青青国产亚洲免观| 99国产精品久久久久久久久久| 国产亚洲欧美aaaa| 欧美日韩亚洲一区二区三区在线| 久久成人亚洲| 亚洲一区二区三区四区在线观看 | 亚洲影视九九影院在线观看| **性色生活片久久毛片| 国产精品日日摸夜夜摸av| 欧美大成色www永久网站婷| 香港成人在线视频| 中文网丁香综合网| 亚洲精品少妇30p| 欧美激情第9页| 欧美成人激情视频| 久久蜜桃av一区精品变态类天堂| 亚洲欧美日韩国产精品| 日韩视频在线免费| 亚洲精品极品| 亚洲日本中文字幕| 亚洲国产成人在线播放| 黄色小说综合网站| 国内精品免费在线观看| 国产美女精品一区二区三区| 国产精品99一区| 国产精品电影观看| 欧美三区视频| 欧美午夜电影一区| 欧美日韩亚洲一区二区| 欧美日韩亚洲精品内裤| 欧美日韩国产一级| 欧美日韩精选| 国产精品九九| 国产精品日本欧美一区二区三区| 国产精品久久久久久av福利软件 | 在线成人欧美| 1769国产精品| 亚洲韩国日本中文字幕| 亚洲福利小视频| 亚洲欧洲日本国产| 艳女tv在线观看国产一区| 一区二区欧美亚洲| 亚洲一区二区在线看| 午夜亚洲一区| 久久久久一本一区二区青青蜜月| 久久手机精品视频| 欧美成人中文字幕在线| 亚洲国内自拍| 亚洲网站视频| 欧美伊人久久大香线蕉综合69| 欧美中文字幕在线观看| 午夜精品一区二区三区在线| 亚洲日本成人网| 在线精品国产欧美| 亚洲精品一区在线| 亚洲一区二区在线视频| 性做久久久久久久久| 久久综合久久综合久久| 欧美电影在线免费观看网站| 亚洲国产欧洲综合997久久| 亚洲伦理在线免费看| 亚洲午夜女主播在线直播| 久久精品在线视频| 欧美精品一区二区三区高清aⅴ| 欧美性猛片xxxx免费看久爱| 国产在线精品二区| 99国内精品久久久久久久软件| 亚洲欧美日韩精品久久亚洲区 | 久久深夜福利| 91久久国产综合久久蜜月精品| 亚洲午夜伦理| 嫩草国产精品入口| 国产乱码精品一区二区三区不卡| 亚洲国产第一页| 亚洲欧美日韩成人高清在线一区| 免费一级欧美在线大片| 亚洲视频网在线直播| 欧美www视频| 国产日韩欧美综合在线| 国产精品99久久不卡二区 | 亚洲欧洲一区二区在线播放| 亚洲欧美日韩中文在线制服| 欧美黄免费看| 久久成人免费视频|