Submission #1083732

#TimeUsernameProblemLanguageResultExecution timeMemory
1083732rayan_bd슈퍼트리 잇기 (IOI20_supertrees)C++17
0 / 100
1144 ms1728780 KiB
#include <bits/stdc++.h> #include "supertrees.h" using namespace std; struct DSU { int N; vector<int> par,sz; void init(int n){ N=n; par.resize(n+1); sz.resize(n+1,1); iota(par.begin(),par.end(),1); } int findPar(int u){ if(par[u]==u) return u; return par[u]=findPar(par[u]); } void unite(int u,int v){ int ulp=findPar(u); int vlp=findPar(v); if(ulp==vlp) return; if(sz[ulp]>sz[vlp]){ par[vlp]=ulp; sz[ulp]+=sz[vlp]; }else{ par[ulp]=vlp; sz[vlp]+=ulp; } } bool is_same(int u,int v){ return findPar(u)==findPar(v); } }; int construct(vector<vector<int>> p) { int n = p.size(); vector<vector<int>> adj(n,vector<int>(n,0)); DSU dsu; dsu.init(n+1); for(int i=0;i<n;++i){ for(int j=i+1;j<n;++i){ if(p[i][j]>0) dsu.unite(i,j); } } for(int i=0;i<n;++i){ for(int j=i+1;j<n;++j){ if(p[i][j]==0&&dsu.is_same(i,j)){ return 0; } } } vector<vector<int>> compo(n); for(int i=0;i<n;++i){ int ulp=dsu.findPar(i); compo[ulp].push_back(i); } for(int i=0;i<n;++i){ for(int j=0;j<compo[i].size()-1;++j){ int u=compo[i][j],v=compo[i][j+1]; adj[u][v]=adj[v][u]=1; } } build(adj); return 1; }

Compilation message (stderr)

supertrees.cpp: In function 'int construct(std::vector<std::vector<int> >)':
supertrees.cpp:65:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   65 |   for(int j=0;j<compo[i].size()-1;++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...
#Verdict Execution timeMemoryGrader output
Fetching results...