Advertisement
Graf_Rav

Untitled

Jan 6th, 2018
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.47 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. bool fl=false;
  7. void dfs(int v, vector <vector <int> > &graph, vector <bool> &visited, vector <int> &value, int prev) {
  8.     visited[v] = true;
  9.     value[v]=prev;
  10.     for (int i = 0; i < (int)graph[v].size(); ++i) {
  11.         if(graph[v][i]){
  12.             if(value[i]!=0 && value[i]%2==value[v]%2){
  13.                 fl=true;
  14.                 return;
  15.             }
  16.         }
  17.         if (graph[v][i] && !visited[i]) {
  18.             dfs(i, graph, visited, value, prev+1);
  19.         }
  20.     }
  21.      
  22. }
  23.  
  24. int main() {
  25.     int n, m;
  26.     cin>>n>>m;
  27.     vector <vector<int> > graph(n, vector <int>(n));
  28.     vector <bool> visited(n, 0);
  29.     vector <bool> used(n, 0);
  30.     vector <int> value(n, 0);
  31.    
  32.     for(int i=0;i<n;i++){
  33.         for(int j=0;j<n;j++){
  34.             if(i==j){
  35.                 graph[i][j]=false;
  36.             }
  37.         }
  38.     }
  39.    
  40.     int a,b;
  41.     for(int i=0;i<m;i++){
  42.         cin>>a>>b;
  43.         graph[a-1][b-1]=true;
  44.         graph[b-1][a-1]=true;
  45.         used[a-1]=true;
  46.         used[b-1]=true;
  47.     }
  48.    
  49.     while(1){
  50.         int h=0;
  51.         for(int i=0;i<n;i++){
  52.             if(used[i] && !visited[i]){
  53.                 h++;
  54.                 dfs(i, graph, visited, value, 1);
  55.                 if(fl){
  56.                     cout<<"NO";
  57.                     return 0;
  58.                 }
  59.             }
  60.         }
  61.         if(h==0){
  62.             break;
  63.         }
  64.     }
  65.     cout<<"YES";
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement