anoosykh95

Untitled

Jul 22nd, 2016
344
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.96 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int n,m;
  4. vector<int>adj[205];
  5. bool vis[205];
  6. vector<int>v;
  7. bool dfs(int x)
  8. {
  9.     if(vis[x^1])return 0;
  10.     vis[x]=1;
  11.     v.push_back(x);
  12.     for(int i=0;i<adj[x].size();++i){
  13.         if(vis[adj[x][i]])continue;
  14.         if(!dfs(adj[x][i]))return 0;
  15.     }
  16.     return 1;
  17. }
  18. void dfs1(){
  19.     for(auto x:v){
  20.         vis[x]=0;
  21.     }
  22.     v.clear();
  23. }
  24. int main()
  25. {
  26.     cin>>n>>m;
  27.     int a,b,c;
  28.     for(int i=0;i<m;++i){
  29.         cin>>a>>b>>c;
  30.         gen_graph();
  31.     }
  32.     memset(vis,0,sizeof vis);
  33.     bool ok=1;
  34.     for(int i=2;i<=2*n+1;i+=2){
  35.         if(!vis[i]&&!vis[i^1]){
  36.             if(dfs(i)){v.clear();continue;}
  37.             dfs1();
  38.             if(!dfs(i+1)){cout<<"Impossible\n";return 0;}
  39.             v.clear();
  40.         }
  41.     }
  42.     vector<int>sol;
  43.     for(int i=2;i<=2*n;i+=2)if(vis[i])sol.push_back(i/2);
  44.     cout<<sol.size()<<endl;
  45.     for(int i=0;i<sol.size();++i)cout<<sol[i]<<" ";
  46. }
Add Comment
Please, Sign In to add comment