제출 #441739

#제출 시각아이디문제언어결과실행 시간메모리
441739julian33슈퍼트리 잇기 (IOI20_supertrees)C++14
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h> #include "supertrees.h" using namespace std; #ifdef LOCAL #define deb(...) logger(#__VA_ARGS__, __VA_ARGS__) template<typename ...Args> void logger(string vars, Args&&... values) { cerr<<vars<<" = "; string delim=""; (...,(cerr<<delim<<values,delim=", ")); cerr<<"\n"; } #else #define deb(...) logger(#__VA_ARGS__, __VA_ARGS__) template<typename ...Args> void logger(string vars, Args&&... values) {} #endif #define FOR(i,j,n) for(int i=j;i<n;i++) #define pb push_back #define sz(x) (int)(x.size()) typedef long long ll; typedef pair<int,int> pii; typedef pair<ll,ll> pll; template<typename T> inline void maxa(T& a,T b){a=max(a,b);} template<typename T> inline void mina(T& a,T b){a=min(a,b);} /* subtask 1: make a line graph subtask 2: make multiple line graphs, make sure no components have contradictions subtask 3: make multiple rings, make sure no contradictions subtask 4: in each component, make components of 2s. Form these into rings. connect the rings. then get components of ones and make them into line graphs. subtask 5: subtask 4 and check for contradictions subtask 6: for the components of 3, make a ring and add an extra edge rings must have at least 3 nodes 3-rings must have at least 4 nodes */ // void build(vector<vector<int>> b){ // int n=sz(b); // for(int i=0;i<n;i++){ // for(int j=0;j<n;j++){ // cout<<b[i][j]<<" "; // } // cout<<"\n"; // } // } const int mxN=1e3+5; int uf[mxN]; int find(int x){return uf[x]<0?x:uf[x]=find(uf[x]);} bool same(int x,int y){return find(x)==find(y);} void unite(int x,int y){ x=find(x); y=find(y); if(x==y) return; if(uf[x]>uf[y]) swap(x,y); uf[x]+=uf[y]; uf[y]=x; } int construct(vector<vector<int>> p){ memset(uf,-1,size(uf)); int n=sz(p); vector<vector<int>> b; b.resize(n); for(auto &u:b) u.resize(n); for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(p[i][j]) unite(i,j); } } for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(!p[i][j] && same(i,j)) return 0; } } vector<int> component[n]; for(int i=0;i<n;i++){ component[find(i)].pb(i); } for(auto u:component){ if(sz(u)<=1) continue; if(sz(u)==2 && p[u[0]][u[1]]==2) return 0; for(int i=0;i<sz(u)-1;i++){ b[u[i]][u[i+1]]=b[u[i+1]][u[i]]=1; } if(p[u[0]][u[1]]==2) b[u[0]][u.back()]=b[u.back()][u[0]]=1; } build(b); return 1; }

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

supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:70:18: error: 'size' was not declared in this scope
   70 |     memset(uf,-1,size(uf));
      |                  ^~~~