pastebin

Paste Search Dynamic
Recent pastes
void DFS
  1. #include<bits/stdc++.h>
  2. #define FIO ios_base::sync_with_stdio(0);cin.tie(0);
  3. using namespace std;
  4. typedef long long ll;
  5.  
  6. const int MOD=1e9+7, OO=0x3f3f3f3f;
  7. const ll LOO=0x3f3f3f3f3f3f3f3f;
  8. const long double EPS=1e-8;
  9.  
  10.  
  11. void DFS(int node, vector<vector<pair<int,int>>>& adj, vector<int>& degree, vector<bool>& visEdges, vector<int>& path){
  12.   while(degree[node] > 0){
  13.     auto edgeId=adj[node][degree[node]-1].second;
  14.     if(visEdges[edgeId]){
  15.       degree[node]--;
  16.       continue;
  17.     }
  18.     visEdges[edgeId]=1;
  19.     auto neigh=adj[node][--degree[node]].first;
  20.     DFS(neigh, adj, degree, visEdges, path);
  21.   }
  22.   path.push_back(node);
  23. }
  24.  
  25.  
  26. vector<int> Euler(vector<vector<pair<int,int>>>& adj, int edges, vector<int>& degree){
  27.   for(int node=0; node<adj.size(); node++)
  28.     if(degree[node] & 1)
  29.       return {};
  30.  
  31.   vector<int> path;
  32.   vector<bool> visEdges(edges, 0);
  33.  
  34.   for(int node=0; node<adj.size(); node++){
  35.     if(degree[node] > 0){
  36.       DFS(node, adj, degree, visEdges, path);
  37.       break;
  38.     }
  39.   }
  40.  
  41.   if(path.size()!=edges+1) return {};
  42.   reverse(path.begin(), path.end());
  43.   return path;
  44. }
  45.  
  46.  
  47.  
  48. int main(){
  49.   FIO
  50.   // freopen("input.txt","rt",stdin);
  51.   // freopen("output.txt","wt",stdout);
  52.   int n,m;
  53.   while(cin>>n>>m){
  54.     vector<vector<pair<int,int>>>adj(n);
  55.     vector<int> degree(n, 0);
  56.     for(int i=0; i<m; i++){
  57.       int u,v;
  58.       cin>>u>>v;
  59.       adj[u].push_back({v,i});
  60.       adj[v].push_back({u,i});
  61.       degree[u]++;
  62.       degree[v]++;
  63.     }
  64.     auto path=Euler(adj, m, degree);
  65.     if(path.empty()) cout<<"Not Possiblen";
  66.     else cout<<"Possiblen";
  67.    
  68.   }
  69.  
  70.   return 0;
  71. }
  72.  
Parsed in 0.023 seconds