Submission #1041481

#TimeUsernameProblemLanguageResultExecution timeMemory
1041481vjudge1Izlet (COI19_izlet)C++17
25 / 100
370 ms58452 KiB
/* بسم الله الرحمن الرحيم Author: (:Muhammad Aneeq:) */ #include <iostream> #include <vector> using namespace std; int const N=3e3+10; int par[N]={}; bool vis[N][N]={}; vector<int>mem[N]={}; int a[N][N]={}; int root(int n) { if (par[n]==n) return n; return (par[n]=root(par[n])); } bool merge_able(int c,int b) { if (vis[c][b]) return 0; vis[c][b]=1; for (auto i:mem[c]) { for (auto j:mem[b]) { int u=i,v=j; if (u>v) swap(u,v); if (a[u][v-1]!=a[u][v]) return 0; } } return 1; } void merge(int a,int b) { a=root(a);b=root(b); if (a==b) return; if (merge_able(a,b)==0) return ; for (auto i:mem[b]) mem[a].push_back(i); mem[b]={}; par[b]=a; } inline void solve() { int subt; cin>>subt; int n; cin>>n; for (int i=0;i<n;i++) par[i]=i,mem[i].push_back(i); for (int i=0;i<n;i++) for (int j=0;j<n;j++) cin>>a[i][j]; if (subt==2) { for (int i=1;i<n;i++) { for (int j=0;j<n-i;j++) { merge(j,i+j); } } for (int i=0;i<n;i++) cout<<root(i)+1<<' '; cout<<endl; for (int i=1;i<n;i++) cout<<i<<' '<<i+1<<endl; } } int main() { ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...