제출 #559386

#제출 시각아이디문제언어결과실행 시간메모리
559386leakedIzlet (COI19_izlet)C++17
0 / 100
0 ms212 KiB
#include <bits/stdc++.h> #define f first #define s second #define m_p make_pair #define vec vector #define pb push_back #define all(x) (x).begin(),(x).end() #define rall(x) (x).rbegin(),(x).rend() #define sz(x) (int)(x).size() #define pw(x) (1LL<<(x)) using namespace std; typedef pair<int,int> pii; typedef long long ll; template<class T> bool umax(T &a,const T &b){return (a<b?a=b,1:0);} template<class T> bool umin(T &a,const T &b){return (a>b?a=b,1:0);} const int N=3e3+1; //int c[N][N]; //struct dsu{ // int p[N]; // dsu(){ // iota(p,p+N,0); // } // int get(int v){ // return p[v]=(p[v]==v?v:get(p[v])); // } // bool mg(int a,int b,int need=0){ // a=get(a),b=get(b); // if(a==b) return 0; // if(need){ // for(int i=0;i<n;i++) // assert(c[a][i]==c[b][i]); // } // p[a]=b; // return 1; // } //}ds; vec<int> have; bool used[N]; int n; int x[N][N],clr[N],cnt; vec<pii> e; void dfs(int v){ used[v]=1; have.pb(v); for(int u=0;u<n;u++){ // if(u!=ds.get(u)) continue; if(!used[u] && x[v][u]<=2){ if(x[v][u]==1){ clr[u]=clr[v]; e.pb({v,u}); dfs(u); continue; } int ok=1; int e=1; int o=-1; cout<<"W "<<u<<endl; for(auto &z : have){ if(!ok) break; if(x[u][z]!=(x[v][z]+e)) o=z,e=0; if(x[u][z]!=(x[v][z]+e)) ok=0; } if(ok){ ::e.pb({v,u}); if(o==-1) clr[u]=++cnt; else clr[u]=clr[o]; dfs(u); } } } have.pop_back(); } signed main(){ ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0); ifstream cin("input.txt"); int t; cin>>t>>n; for(int i=0;i<n;i++){ for(int j=0;j<n;j++) cin>>x[i][j]; // for(int j=0;j<n;j++){ // if(c[i][j]==1) // ds.mg(i,j,1); // } } clr[0]=++cnt; dfs(0); for(int i=0;i<n;i++){ cout<<clr[i]<<' '; } cout<<'\n'; for(auto &z : e) cout<<z.f+1<<' '<<z.s+1<<endl; return 0; } /* */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...