# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
204326 | 2020-02-25T12:10:25 Z | kshitij_sodani | Split the Attractions (IOI19_split) | C++17 | 0 ms | 0 KB |
#include <iostream> #include <bits/stdc++.h> using namespace std; typedef long long int llo; #include <split.h> #define mp make_pair #define pb push_back #define a first #define b second vector<llo> adj[200001]; vector<llo> stac; llo bb; int vis[200001]; void dfs(llo no){ stac.pb(no); if((llo)stac.size()==bb){ return ; } for(llo j=0;j<(llo)adj[no].size();j++){ if((llo)stac.size()==bb){ return; } llo nn=adj[no][j]; if(vis[nn]==0){ dfs(nn); } } } vector<llo> find_split(llo n,llo a,llo b,llo c,vector<llo> p,vector<llo> q){ llo m=p.size(); bb=b; memset(vis,0,sizeof(vis)); for(llo i=0;i<m;i++){ adj[p[i]].pb(q[i]); adj[q[i]].pb(p[i]); } if(a==1){ dfs(0); llo st=1; vector<llo> ans; for(int i=0;i<n;i++){ ans.pb(0); } for(llo j=0;j<b;j++){ ans[stac[j]]=(llo)2; } for(llo i=0;i<n;i++){ if(ans[i]==(llo)2){ continue; } ans[i]=st; st=3; } return ans; } } /*int main(){ return 0; }*/