Submission #648944

#TimeUsernameProblemLanguageResultExecution timeMemory
648944blueThousands Islands (IOI22_islands)C++17
11.90 / 100
821 ms20820 KiB
#include "islands.h" #include <bits/stdc++.h> using namespace std; using vi = vector<int>; using pii = pair<int, int>; using vpii = vector<pii>; #define sz(x) int(x.size()) const int mx = 100'000; vpii edge[mx]; vpii revedge[mx]; int N, M; queue<int> tbv; int src = 0; vi pushed(mx, 0); vi killed(mx, 0); vi outdeg(mx, 0); void gettime() { for(int j = 1; j <= 500'000; j++) cerr << "hello world\n"; } variant<bool, vi> find_journey(int N_, int M_, vi U, vi V) { N = N_; M = M_; for(int j = 0; j < M; j++) { edge[U[j]].push_back({V[j], j}); revedge[V[j]].push_back({U[j], j}); outdeg[U[j]]++; } for(int i = 0; i < N; i++) { if(sz(edge[i]) == 0) { pushed[i] = 1; tbv.push(i); } } if(pushed[src]) { // gettime(); return false; } vi originlist; // cerr << sz(tbv) << " ! \n"; while(1) { if(!tbv.empty()) { int u = tbv.front(); tbv.pop(); killed[u] = 1; for(pii vp : revedge[u]) { int v = vp.first; outdeg[v]--; if(outdeg[v] == 0) { pushed[v] = 1; if(v == src) { gettime(); return false; } tbv.push(v); } } } else if(outdeg[src] == 1) { int newsrc; for(pii vp : edge[src]) { if(!pushed[vp.first]) { newsrc = vp.first; break; } } pushed[src] = 1; killed[src] = 1; originlist.push_back(src); for(pii vp : revedge[src]) { int v = vp.first; outdeg[v]--; if(outdeg[v] == 0) { pushed[v] = 1; if(pushed[newsrc]) return false; tbv.push(v); } } src = newsrc; } else { break; } } // for(int j = 1; j <= 500'000; j++) // cerr << "hello world\n"; return true; }

Compilation message (stderr)

islands.cpp: In function 'std::variant<bool, std::vector<int, std::allocator<int> > > find_journey(int, int, vi, vi)':
islands.cpp:109:22: warning: 'newsrc' may be used uninitialized in this function [-Wmaybe-uninitialized]
  109 |      if(pushed[newsrc])
      |                      ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...