Submission #116592

#TimeUsernameProblemLanguageResultExecution timeMemory
116592faustaadp낙하산 고리들 (IOI12_rings)C++17
38 / 100
4104 ms175928 KiB
#include<bits/stdc++.h> typedef long long ll; #define pb push_back #define mp make_pair #define fi first #define se second using namespace std; ll n,isi[1010101],D[1010101],i,j,CC,toe; vector<ll> v[1010101]; vector<ll> w[1010101]; ll br[1010101],tot; ll mi[1010101]; ll b[1010101]; ll p[1010101]; ll nw[1010101],te,Z,has; void Init(int N_) { n = N_; CC=n; isi[0]=n; for(i=1;i<=n;i++)p[i]=i; memset(b,-1,sizeof(b)); memset(br,-1,sizeof(br)); } ll car(ll aa) { if(p[aa]==aa) return aa; else return p[aa]=car(p[aa]); } void dfs(ll aa,ll bb) { te++; nw[aa]=te; mi[aa]=te; b[aa]=toe; ll ii; for(ii=0;ii<v[aa].size();ii++) { if(v[aa][ii]==bb)continue; if(b[v[aa][ii]]!=toe) { dfs(v[aa][ii],aa); mi[aa]=min(mi[aa],mi[v[aa][ii]]); } else mi[aa]=min(mi[aa],nw[v[aa][ii]]); if(mi[v[aa][ii]]>nw[aa]) br[w[aa][ii]]=toe; } } void Link(int A, int B) { Z++; v[A].pb(B); w[A].pb(Z); v[B].pb(A); w[B].pb(Z); if(p[car(A)]!=car(B)) { p[car(A)]=car(B); CC--; } D[A]++; D[B]++; isi[D[A]]++; isi[D[B]]++; isi[D[A]-1]--; isi[D[B]-1]--; tot+=2; } int CountCritical() { has=0; te=0; toe++; for(i=0;i<n;i++) if(b[i]!=toe) dfs(i,i); for(i=0;i<n;i++) { ll CCC=CC,ada=1; isi[D[i]]--; for(j=0;j<v[i].size();j++) { if(br[w[i][j]]==toe) { // cout<<i<<" "<<v[i][j]<<"_\n"; CCC++; } else ada=0; isi[D[v[i][j]]]--; isi[D[v[i][j]]-1]++; } if(ada) CCC--; //cout<<(isi[1]+isi[2]*2)<<" "<<tot-D[i]*2<<"\n"; has+=(((isi[0]+isi[1]+isi[2])==n-1)&&(((n-1)*2-CCC*2)>=(isi[1]+isi[2]*2))); isi[D[i]]++; for(j=0;j<v[i].size();j++) { isi[D[v[i][j]]]++; isi[D[v[i][j]]-1]--; } } return has; }

Compilation message (stderr)

rings.cpp: In function 'void dfs(ll, ll)':
rings.cpp:38:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(ii=0;ii<v[aa].size();ii++)
           ~~^~~~~~~~~~~~~
rings.cpp: In function 'int CountCritical()':
rings.cpp:84:12: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(j=0;j<v[i].size();j++)
           ~^~~~~~~~~~~~
rings.cpp:101:12: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(j=0;j<v[i].size();j++)
           ~^~~~~~~~~~~~
#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...