제출 #1041514

#제출 시각아이디문제언어결과실행 시간메모리
1041514vjudge1Izlet (COI19_izlet)C++17
43 / 100
366 ms55964 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; } if (subt==1) { vector<vector<int>>ans; for (int i=0;i<n;i++) { for (int j=i+1;j<n;j++) { if (a[i][j]==1) { int a=i,b=j; a=root(a),b=root(b); if (a==b) continue; par[b]=a; ans.push_back({a,b}); for (auto i:mem[b]) mem[a].push_back(i); mem[b]={}; } } } int an[n]={}; vector<int>z; for (int i=0;i<n;i++) if (root(i)==i) z.push_back(i); for (int i=1;i<z.size();i++) { ans.push_back({z[i],z[0]}); for (auto j:mem[z[i]]) an[j]=2; } for (auto i:mem[z[0]]) an[i]=1; for (auto i:an) cout<<i<<' '; cout<<endl; for (auto i:ans) cout<<i[0]+1<<' '<<i[1]+1<<endl; } } int main() { ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); solve(); }

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

izlet.cpp: In function 'void solve()':
izlet.cpp:102:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  102 |   for (int i=1;i<z.size();i++)
      |                ~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...