Submission #1075001

#TimeUsernameProblemLanguageResultExecution timeMemory
1075001Osplei어르신 집배원 (BOI14_postmen)C++11
38 / 100
1078 ms26472 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], cone[500005];
vll grafo[500005];
bool vale = false, puede[500005];

void dfs(ll origen, ll nodo, ll aux) {
  
  for (auto i : grafo[nodo]) {

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

        return;
      
      }

      dfs(origen, i.F, aux);

      if (vale == true) {
      
        cout << nodo << " ";
 
        return;
      
      }

      puede[i.S] = true;
    
    }
    
  }

}
 
int main(){
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  
  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;
    cone[i] = u;
  }

  ll cnt = 0;

  for (ll i = 0; i < m; i++) {
    if (puede[i] == true) {
      vale = false;
      cnt++;
      dfs(cone[i], cone[i], cnt);
      cout << "\n";
    }
  }
  
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...