제출 #796379

#제출 시각아이디문제언어결과실행 시간메모리
796379ln_eThousands Islands (IOI22_islands)C++17
10 / 100
26 ms5312 KiB
  #include <bits/stdc++.h> //Andrei Alexandru a.k.a Sho
    #include "islands.h"
    using ll=long long;
    using ld=long double;
    int const INF=1000000005;
    ll const LINF=1000000000000000005;
    ll const mod=1000000007;
    ld const PI=3.14159265359;
    ll const MAX_N=3e5+5;
    ld const EPS=0.00000001;
    #pragma GCC optimize("O3")
    #pragma GCC optimize("Ofast")
    #define f first
    #define s second
    #define pb push_back
    #define mp make_pair
    #define endl '\n'
    #define sz(a) (int)a.size()
    #define CODE_START  ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    using namespace std;
vector<ll>g[1005];
map<ll,ll>viz;
int dfs(ll node){
  viz[node]=1;
  for(auto it : g[node]){
    if(viz[it]==1){
      return 1;
    }
    if(viz[it]==0){
      if(dfs(it)){
        return 1;
      }
    }
  }
  viz[node]=2;
  return 0;
}
std::variant<bool, std::vector<int>> find_journey(
    int N, int M, std::vector<int> U, std::vector<int> V) {
  if (N == 2){
    vector<ll>g[3];
    for(ll i=0;i<M;i++)
    {
      g[U[i]].pb(i);
    }
    if(g[0].size()>=2&&g[1].size()>=1){
      vector<int>ans;
      ans.pb(g[0][0]);
      ans.pb(g[1][0]);
      ans.pb(g[0][1]);
      ans.pb(g[0][0]);
      ans.pb(g[1][0]);
      ans.pb(g[0][1]);
      return ans;
    }else return false;
  }else if(N<=400&&M==N*(N-1)){
    ll indx[10];
    if(N<3){
      return false;
    }
    for(ll i=0;i<M;i++){
      if(U[i]==0&&V[i]==1){
        indx[1]=i;
      }else if(U[i]==1&&V[i]==0){
        indx[2]=i;
      }else if(U[i]==1&&V[i]==2){
        indx[3]=i;
      }else if(U[i]==2&&V[i]==1){
        indx[4]=i;
      }else if(U[i]==0&&V[i]==2){
        indx[5]=i;
      }else if(U[i]==2&&V[i]==0){
        indx[6]=i;
      }
    }
    vector<int>ans;
    ans.pb(indx[1]);
    ans.pb(indx[3]);
    ans.pb(indx[4]);
    ans.pb(indx[1]);
    ans.pb(indx[5]);
    ans.pb(indx[3]);
    ans.pb(indx[4]);
    ans.pb(indx[5]);
    return ans;
  }else if(N<=1000){
    for(ll i=0;i<M;i+=2)
    {
      g[U[i]].pb(V[i]);
      g[V[i]].pb(U[i]);
    }
    ll check=dfs(0);
    if(check==1){
      return true;
    }else return false;
  }
}

컴파일 시 표준 에러 (stderr) 메시지

islands.cpp: In function 'std::variant<bool, std::vector<int, std::allocator<int> > > find_journey(int, int, std::vector<int>, std::vector<int>)':
islands.cpp:97:1: warning: control reaches end of non-void function [-Wreturn-type]
   97 | }
      | ^
islands.cpp:78:11: warning: 'indx[3]' may be used uninitialized in this function [-Wmaybe-uninitialized]
   78 |     ans.pb(indx[3]);
      |     ~~~~~~^~~~~~~~~
islands.cpp:77:11: warning: 'indx[1]' may be used uninitialized in this function [-Wmaybe-uninitialized]
   77 |     ans.pb(indx[1]);
      |     ~~~~~~^~~~~~~~~
islands.cpp:81:11: warning: 'indx[5]' may be used uninitialized in this function [-Wmaybe-uninitialized]
   81 |     ans.pb(indx[5]);
      |     ~~~~~~^~~~~~~~~
islands.cpp:79:11: warning: 'indx[4]' may be used uninitialized in this function [-Wmaybe-uninitialized]
   79 |     ans.pb(indx[4]);
      |     ~~~~~~^~~~~~~~~
#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...