제출 #796443

#제출 시각아이디문제언어결과실행 시간메모리
796443ln_e수천개의 섬 (IOI22_islands)C++17
18.40 / 100
50 ms6392 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&&U[0]==U[1]){
        for(ll i=0;i<M;i+=2)
        {
          g[U[i]].pb(V[i]);
        }
        ll check=dfs(0);
        for(ll i=0;i<N;i++)
        {
          g[i].clear();
        }
        for(ll i=1;i<M;i+=2){
          g[U[i]].pb(V[i]);
        }
        check|=dfs(0);
        if(check==1){
          return true;
        }else return false;
      }else if(N<=1000){
       for(ll i=0;i<M;i++)
       {
        g[U[i]].pb(V[i]);
       }
       if(dfs(0)){
        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:112:4: warning: control reaches end of non-void function [-Wreturn-type]
  112 |    }
      |    ^
islands.cpp:77:15: warning: 'indx[1]' may be used uninitialized in this function [-Wmaybe-uninitialized]
   77 |         ans.pb(indx[1]);
      |         ~~~~~~^~~~~~~~~
islands.cpp:78:15: warning: 'indx[3]' may be used uninitialized in this function [-Wmaybe-uninitialized]
   78 |         ans.pb(indx[3]);
      |         ~~~~~~^~~~~~~~~
islands.cpp:79:15: warning: 'indx[4]' may be used uninitialized in this function [-Wmaybe-uninitialized]
   79 |         ans.pb(indx[4]);
      |         ~~~~~~^~~~~~~~~
islands.cpp:81:15: warning: 'indx[5]' may be used uninitialized in this function [-Wmaybe-uninitialized]
   81 |         ans.pb(indx[5]);
      |         ~~~~~~^~~~~~~~~
#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...