Submission #1074957

#TimeUsernameProblemLanguageResultExecution timeMemory
1074957OspleiSenior Postmen (BOI14_postmen)C++17
0 / 100
49 ms14676 KiB
#include <bits/stdc++.h>
 
using namespace std;
 
typedef pair<int,int> ii;
typedef int ll;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<ii> vii; 
typedef vector<vii> wgraf;
typedef pair<int,ii> edge;
typedef vector <ll> vl;
typedef pair <ll, ll> LL;
typedef vector <LL> vll;
 
#define UNVISITED 0
#define VISITED 1
#define pb push_back
#define F first
#define S second
 
ll n, m, u, v, visto[500005];
vll grafo[500005];
bool vale = false, puede[500005];

void dfs(ll origen, ll nodo, ll padre, ll aux) {

  if (nodo == origen && padre != -1) {
    vale = true;
    return;
  }
  
  for (auto i : grafo[nodo]) {

    if (i.F != padre && puede[i.S] == true && visto[i.F] != aux) {
    
      puede[i.S] = false;
      visto[i.F] = aux;
      
      dfs(origen, i.F, nodo, aux);
      
      if (vale == true) {
      
        cout << nodo << " ";

        return;
      
      }

      puede[i.S] = true;
    
    }
    
  }

}

void SOLVE(){
  cin >> n >> m;

  for (ll i = 0; i < n; i++) visto[i] = 0;

  for (ll i = 0; i < m; i++){
    cin >> u >> v;

    grafo[u].pb({v, i});
    grafo[v].pb({u, i});

    puede[i] = true;
  }

  ll cnt = 0;

  for (ll i = 1; i <= n; i++) {
    vale = false;
    cnt++;
    dfs(i, i, -1, cnt);
    if (vale == true) cout << "\n";
  }
}
 
int main(){
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int t = 1;
  //cin >> t;
  while(t--){
    SOLVE();
  }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...