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

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>
            亚洲精品影视在线观看| 亚洲伊人网站| 亚洲高清一区二| 久久青青草综合| 亚洲第一偷拍| 亚洲国产一区二区三区高清| 欧美精品www| 亚洲欧美国产一区二区三区| 亚洲欧美欧美一区二区三区| 国内精品久久久久久影视8| 蜜桃av一区二区| 欧美日本高清一区| 性欧美xxxx大乳国产app| 久久国内精品视频| 亚洲精品国久久99热| 一区二区三区黄色| 激情综合五月天| 亚洲人体偷拍| 国产一区二区精品久久91| 欧美激情精品久久久久久变态| 欧美日韩国产成人| 久久久久久久999| 欧美精品v日韩精品v国产精品| 亚洲综合日本| 麻豆亚洲精品| 久久国产精品久久w女人spa| 欧美凹凸一区二区三区视频| 亚洲欧美美女| 欧美寡妇偷汉性猛交| 午夜精品久久久| 奶水喷射视频一区| 久久精品国产v日韩v亚洲 | 午夜精品久久久久久久99水蜜桃| 欧美一级专区| 亚洲一区视频在线观看视频| 久久人人九九| 欧美在线看片| 欧美无砖砖区免费| 亚洲电影在线观看| 激情亚洲一区二区三区四区| 亚洲视频免费在线观看| 亚洲高清视频的网址| 午夜视频一区| 亚洲欧美日韩国产一区二区三区 | 亚洲综合成人在线| 一区二区三区日韩欧美| 久久午夜电影网| 久久久女女女女999久久| 欧美婷婷在线| 亚洲精品国产精品国自产观看浪潮| 国产日韩欧美自拍| 亚洲免费在线播放| 亚洲欧美一区二区激情| 欧美日韩123| 欧美成人日韩| 99re亚洲国产精品| 免费试看一区| 久久久久久久尹人综合网亚洲| 欧美日韩综合视频| 99视频超级精品| 在线中文字幕一区| 欧美日韩一区免费| 亚洲精品自在在线观看| 日韩一二三区视频| 欧美精品在线视频| 亚洲精品免费在线播放| 亚洲精选成人| 欧美日韩高清不卡| 一本久道久久综合婷婷鲸鱼| 99视频超级精品| 欧美偷拍另类| 亚洲在线免费| 久久久亚洲高清| 亚洲第一精品夜夜躁人人躁| 久久久久久久999| 欧美二区在线观看| 99精品欧美一区二区蜜桃免费| 欧美激情一区二区| 亚洲最新在线| 久久精品国产亚洲一区二区三区| 国产美女高潮久久白浆| 欧美在线1区| 欧美国产欧美亚州国产日韩mv天天看完整| 亚洲国产精品视频| 欧美日韩久久不卡| 午夜精品免费| 亚洲第一天堂av| 亚洲一区二区不卡免费| 国产精品揄拍一区二区| 久久久久一区二区三区| 亚洲国产精品第一区二区三区| 99这里只有精品| 国产精品揄拍一区二区| 久久精品国产99| 亚洲国产精品va在线看黑人动漫| 99精品国产一区二区青青牛奶| 欧美日韩免费网站| 欧美主播一区二区三区美女 久久精品人| 免费在线成人av| 中国av一区| 黄色av成人| 欧美丝袜一区二区三区| 性欧美1819性猛交| 亚洲毛片视频| 久久在线观看视频| 亚洲男人的天堂在线观看| 黄色精品网站| 国产精品日韩二区| 嫩模写真一区二区三区三州| 亚洲欧美日韩一区二区三区在线观看 | 国产精品大片免费观看| 久久精品免费播放| 亚洲先锋成人| 最新高清无码专区| 久久嫩草精品久久久精品| 在线一区二区三区四区| 在线成人中文字幕| 国产美女精品人人做人人爽| 欧美精品在线观看| 久久久精彩视频| 亚洲欧美在线免费| 夜夜嗨av色一区二区不卡| 欧美黄色大片网站| 久久人人爽人人爽| 欧美一区二区大片| 亚洲欧美www| 亚洲午夜性刺激影院| 亚洲日本电影| 亚洲国产精品va在线观看黑人| 国产精品免费网站| 国产精品va在线播放| 欧美久久久久久久| 欧美多人爱爱视频网站| 久久免费视频在线观看| 欧美一区高清| 欧美专区第一页| 欧美专区日韩专区| 久久成人精品视频| 久久精品国产精品亚洲综合| 午夜欧美理论片| 午夜精品婷婷| 欧美一区二区三区另类| 午夜伦欧美伦电影理论片| 亚洲男人的天堂在线| 中日韩高清电影网| 亚洲一区图片| 亚欧成人精品| 久久国产精品一区二区三区| 欧美在线|欧美| 欧美中文字幕视频| 久久久亚洲精品一区二区三区 | 蜜桃久久精品乱码一区二区| 久久深夜福利免费观看| 久久青草欧美一区二区三区| 久久综合久色欧美综合狠狠| 麻豆成人精品| 欧美日本国产| 国产麻豆日韩欧美久久| 国产一区久久| 亚洲级视频在线观看免费1级| 亚洲国产日韩一区二区| 99伊人成综合| 中文欧美在线视频| 欧美一区=区| 可以看av的网站久久看| 亚洲国产精品一区二区www| 91久久中文| 亚洲欧美国产毛片在线| 久久精品综合一区| 欧美国产免费| 国产日本欧美一区二区| 好看的亚洲午夜视频在线| 亚洲激情在线播放| 亚洲一区二区视频在线观看| 午夜免费日韩视频| 欧美成人亚洲| 一本色道久久加勒比88综合| 午夜精彩视频在线观看不卡| 免费欧美电影| 国产精品国产三级国产普通话三级| 国产自产2019最新不卡| 亚洲欧洲日本一区二区三区| 亚洲欧美一区在线| 欧美www视频| 亚洲欧美日韩视频二区| 美女性感视频久久久| 国产精品系列在线播放| 亚洲精品欧美日韩| 久久精品中文| 中文精品在线| 蜜臀av在线播放一区二区三区| 国产精品白丝av嫩草影院| 亚洲第一页中文字幕| 久久精品91久久香蕉加勒比| 亚洲电影av| 久久久久久久综合| 国产酒店精品激情| 亚洲网站在线播放| 欧美激情在线观看| 久久久久久电影|