제출 #796450

#제출 시각아이디문제언어결과실행 시간메모리
796450ln_e수천개의 섬 (IOI22_islands)C++17
10 / 100
35 ms6820 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,ll par){
      viz[node]=1;
      ll check=0;
      for(auto it : g[node]){
        if(viz[it]==1){
          if(it==par){
            if(check==1){
              return 1;
            }else check=1;
          }else {
            return 1;
          }
        }
        if(viz[it]==0){
          if(dfs(it,node)){
            return 1;
          }
        }
      }
      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){
        map<ll,ll>deg;
        for(ll i=0;i<M;i+=2)
        {
          g[U[i]].pb(V[i]);
          g[V[i]].pb(U[i]);
          deg[U[i]]++;
          deg[V[i]]++;
        }
        queue<ll>q;
        q.push(0);
        while(!q.empty()){
          ll x=q.front();
          q.pop();
          if(deg[x]>=4){
            return true;
          }
          for(auto it : g[x]){
            if(viz[it]==0){
              q.push(it);
              viz[it]=1;
            }
          }
        }
        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:118:5: warning: control reaches end of non-void function [-Wreturn-type]
  118 |     }
      |     ^
islands.cpp:85:15: warning: 'indx[4]' may be used uninitialized in this function [-Wmaybe-uninitialized]
   85 |         ans.pb(indx[4]);
      |         ~~~~~~^~~~~~~~~
islands.cpp:84:15: warning: 'indx[3]' may be used uninitialized in this function [-Wmaybe-uninitialized]
   84 |         ans.pb(indx[3]);
      |         ~~~~~~^~~~~~~~~
islands.cpp:83:15: warning: 'indx[1]' may be used uninitialized in this function [-Wmaybe-uninitialized]
   83 |         ans.pb(indx[1]);
      |         ~~~~~~^~~~~~~~~
islands.cpp:87:15: warning: 'indx[5]' may be used uninitialized in this function [-Wmaybe-uninitialized]
   87 |         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...