제출 #1058232

#제출 시각아이디문제언어결과실행 시간메모리
1058232noyancanturk수천개의 섬 (IOI22_islands)C++17
10 / 100
54 ms17396 KiB
#include "islands.h" #include<bits/stdc++.h> using namespace std; #define pb push_back using pii=pair<int,int>; int n,m; map<pii,int>mp; const int lim=2e5+100; bool vis[lim]; vector<int>v[lim]; bool foundloop=0; void dfs(int node,int par){ vis[node]=1; for(int j:v[node]){ if(vis[j]){ foundloop=1; return; } dfs(j,node); if(foundloop)return; } } std::variant<bool, std::vector<int>> find_journey( int N, int M, std::vector<int> U, std::vector<int> V) { n=N,m=M; if(n==2){ vector<int>go,come; for(int i=0;i<m;i++){ if(!U[i])go.pb(i); else come.pb(i); } if(come.size()&&1<go.size()){ return vector<int>{go[0],come[0],go[1],go[0],come[0],go[1]}; } return false; } for(int i=0;i<m;i++){ mp[{U[i],V[i]}]=i; } if(mp.size()==n*(n-1)){ return vector<int>{mp[{0,1}],mp[{1,2}],mp[{2,1}],mp[{0,1}],mp[{0,2}],mp[{1,2}],mp[{2,1}],mp[{0,2}]}; } bool flag=1; for(int i=0;i<m;i+=2){ if(U[i]==V[i+1])flag=0; } if(!flag){ for(int i=0;i<m;i++){ v[U[i]].pb(V[i]); } }else{ for(int i=0;i<m;i+=2){ v[U[i]].pb(V[i]); } } dfs(0,-1); if(foundloop)return true; 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:51:15: warning: comparison of integer expressions of different signedness: 'std::map<std::pair<int, int>, int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   51 |   if(mp.size()==n*(n-1)){
      |      ~~~~~~~~~^~~~~~~~~
#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...