Submission #584624

#TimeUsernameProblemLanguageResultExecution timeMemory
584624TimDee슈퍼트리 잇기 (IOI20_supertrees)C++14
Compilation error
0 ms0 KiB
#include "supertrees.h" #include <bits/stdc++.h> using namespace std; #define forn(i,n) for (int i=0; i<n; ++i) #define all(a) a.begin(), a.end() #define pb(x) push_back(x) #define mp(x,y) make_pair(x,y) #define pi pair<int,int> #define f first #define s second int mirror(vector<vector<int>>&a) { int n=a.size(); for (int i=0; i<n; ++i) { for (int j=i+1; j<n; ++j) { if (a[i][j]!=a[j][i]) return 0; } } forn(i,n) if (a[i][i]!=1) return 0; return 1; } int check(vector<vector<int>>&p,vector<int>&one,vector<int>&vis) { if (one.size()<=0) return 1; queue<int> q; forn(i,one.size()) { q.push(one[i]); } //forn(i,p.size()) cout<<vis[i]<<' '; cout<<'\n'; while (!q.empty()) { int v=q.front(); q.pop(); //cout<<"q "<<v<<'\n'; forn(i,p.size()) { if (i==v) continue; if (p[v][i]==1 && vis[i]!=10) return 0; } } forn(i,one.size()) vis[one[i]]=1; return 1; } int check2(vector<vector<int>>&p,vector<int>&two,vector<int>&vis) { if (two.size()<=0) return 1; queue<int> q; forn(i,two.size()) { q.push(two[i]); } //forn(i,p.size()) cout<<vis[i]<<' '; cout<<'\n'; while (!q.empty()) { int v=q.front(); q.pop(); //cout<<"q "<<v<<'\n'; forn(i,p.size()) { if (i==v) continue; if (vis[i]==10 && p[v][i]==0) return 0; } } forn(i,two.size()) vis[two[i]]=1; return 1; } int bfs(vector<vector<int>>&p, vector<int>&vis, int v, vector<pair<int,int>>&edges) { vector<int> one, two; vector<int> cycle; int n=p.size(); forn(i,n) { if (i==v) continue; if (p[v][i]==1) one.pb(i); else if (p[v][i]==2) two.pb(i); } forn(i,one.size()) vis[one[i]]=10; forn(i,two.size()) vis[two[i]]=10; vis[v]=10; forn(i,one.size()) { forn(j,one.size()) { if (i==j) continue; if (p[one[i]][one[j]]!=1) return 0; } } forn(i,one.size()) edges.pb(mp(v,one[i])); //forn(i,one.size()) vis[one[i]]=1; //forn(i,two.size()) vis[two[i]]=1; //vis[v]=1; if (!two.size()) { //forn(i,one.size()) vis[one[i]]=1; //vis[v]=1; return check(p,one,vis); } else if (two.size()==1) return 0; else { forn(i,one.size()) { forn(j,two.size()) { if (p[one[i]][two[j]]!=2) return 0; } } cycle={v}; forn(i,two.size()) { int foo=1; forn(j,cycle.size()) { if (p[two[i]][cycle[j]]==2) continue; else {foo=0; break;} } if (foo) cycle.pb(two[i]); } } queue<int> q; forn(i,cycle.size()) { if (cycle[i]!=v) q.push(cycle[i]); } while (!q.empty()) { int v=q.front(); q.pop(); vector<int> one, two; forn(i,n) { if (i==v) continue; if (p[v][i]==1) one.pb(i); else if (p[v][i]==2) two.pb(i); } forn(i,one.size()) { forn(j,one.size()) { if (i==j) continue; if (p[one[i]][one[j]]!=1) return 0; } } forn(i,one.size()) edges.pb(mp(v,one[i])); forn(i,one.size()) if (vis[one[i]]!=10) return 0; forn(i,two.size()) if (vis[two[i]]!=10) return 0; if (vis[v]!=10) return 0; if (!two.size()) { continue; } else if (two.size()==1) return 0; else { forn(i,one.size()) { forn(j,two.size()) { if (p[one[i]][two[j]]!=2) return 0; } } } } if (cycle.size()<=2) return 0; forn(i,cycle.size()) { edges.pb(mp(cycle[i],cycle[(i+1)%cycle.size()])); } if (!check2(p,two,vis)) return 0; forn(i,one.size()) vis[one[i]]=1; forn(i,two.size()) vis[two[i]]=1; vis[v]=1; return 1; }

Compilation message (stderr)

supertrees.cpp: In function 'int check(std::vector<std::vector<int> >&, std::vector<int>&, std::vector<int>&)':
supertrees.cpp:4:34: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define forn(i,n) for (int i=0; i<n; ++i)
......
   27 |   forn(i,one.size()) {
      |        ~~~~~~~~~~~~               
supertrees.cpp:27:3: note: in expansion of macro 'forn'
   27 |   forn(i,one.size()) {
      |   ^~~~
supertrees.cpp:4:34: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define forn(i,n) for (int i=0; i<n; ++i)
......
   34 |     forn(i,p.size()) {
      |          ~~~~~~~~~~               
supertrees.cpp:34:5: note: in expansion of macro 'forn'
   34 |     forn(i,p.size()) {
      |     ^~~~
supertrees.cpp:4:34: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define forn(i,n) for (int i=0; i<n; ++i)
......
   39 |   forn(i,one.size()) vis[one[i]]=1;
      |        ~~~~~~~~~~~~               
supertrees.cpp:39:3: note: in expansion of macro 'forn'
   39 |   forn(i,one.size()) vis[one[i]]=1;
      |   ^~~~
supertrees.cpp: In function 'int check2(std::vector<std::vector<int> >&, std::vector<int>&, std::vector<int>&)':
supertrees.cpp:4:34: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define forn(i,n) for (int i=0; i<n; ++i)
......
   47 |   forn(i,two.size()) {
      |        ~~~~~~~~~~~~               
supertrees.cpp:47:3: note: in expansion of macro 'forn'
   47 |   forn(i,two.size()) {
      |   ^~~~
supertrees.cpp:4:34: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define forn(i,n) for (int i=0; i<n; ++i)
......
   54 |     forn(i,p.size()) {
      |          ~~~~~~~~~~               
supertrees.cpp:54:5: note: in expansion of macro 'forn'
   54 |     forn(i,p.size()) {
      |     ^~~~
supertrees.cpp:4:34: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define forn(i,n) for (int i=0; i<n; ++i)
......
   59 |   forn(i,two.size()) vis[two[i]]=1;
      |        ~~~~~~~~~~~~               
supertrees.cpp:59:3: note: in expansion of macro 'forn'
   59 |   forn(i,two.size()) vis[two[i]]=1;
      |   ^~~~
supertrees.cpp: In function 'int bfs(std::vector<std::vector<int> >&, std::vector<int>&, int, std::vector<std::pair<int, int> >&)':
supertrees.cpp:4:34: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define forn(i,n) for (int i=0; i<n; ++i)
......
   76 |   forn(i,one.size()) vis[one[i]]=10;
      |        ~~~~~~~~~~~~               
supertrees.cpp:76:3: note: in expansion of macro 'forn'
   76 |   forn(i,one.size()) vis[one[i]]=10;
      |   ^~~~
supertrees.cpp:4:34: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define forn(i,n) for (int i=0; i<n; ++i)
......
   77 |   forn(i,two.size()) vis[two[i]]=10;
      |        ~~~~~~~~~~~~               
supertrees.cpp:77:3: note: in expansion of macro 'forn'
   77 |   forn(i,two.size()) vis[two[i]]=10;
      |   ^~~~
supertrees.cpp:4:34: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define forn(i,n) for (int i=0; i<n; ++i)
......
   80 |   forn(i,one.size()) {
      |        ~~~~~~~~~~~~               
supertrees.cpp:80:3: note: in expansion of macro 'forn'
   80 |   forn(i,one.size()) {
      |   ^~~~
supertrees.cpp:4:34: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define forn(i,n) for (int i=0; i<n; ++i)
......
   81 |     forn(j,one.size()) {
      |          ~~~~~~~~~~~~             
supertrees.cpp:81:5: note: in expansion of macro 'forn'
   81 |     forn(j,one.size()) {
      |     ^~~~
supertrees.cpp:4:34: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define forn(i,n) for (int i=0; i<n; ++i)
......
   86 |   forn(i,one.size()) edges.pb(mp(v,one[i]));
      |        ~~~~~~~~~~~~               
supertrees.cpp:86:3: note: in expansion of macro 'forn'
   86 |   forn(i,one.size()) edges.pb(mp(v,one[i]));
      |   ^~~~
supertrees.cpp:4:34: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define forn(i,n) for (int i=0; i<n; ++i)
......
   98 |     forn(i,one.size()) {
      |          ~~~~~~~~~~~~             
supertrees.cpp:98:5: note: in expansion of macro 'forn'
   98 |     forn(i,one.size()) {
      |     ^~~~
supertrees.cpp:4:34: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define forn(i,n) for (int i=0; i<n; ++i)
......
   99 |       forn(j,two.size()) {
      |            ~~~~~~~~~~~~           
supertrees.cpp:99:7: note: in expansion of macro 'forn'
   99 |       forn(j,two.size()) {
      |       ^~~~
supertrees.cpp:4:34: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define forn(i,n) for (int i=0; i<n; ++i)
......
  104 |     forn(i,two.size()) {
      |          ~~~~~~~~~~~~             
supertrees.cpp:104:5: note: in expansion of macro 'forn'
  104 |     forn(i,two.size()) {
      |     ^~~~
supertrees.cpp:4:34: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define forn(i,n) for (int i=0; i<n; ++i)
......
  106 |       forn(j,cycle.size()) {
      |            ~~~~~~~~~~~~~~         
supertrees.cpp:106:7: note: in expansion of macro 'forn'
  106 |       forn(j,cycle.size()) {
      |       ^~~~
supertrees.cpp:4:34: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define forn(i,n) for (int i=0; i<n; ++i)
......
  115 |   forn(i,cycle.size()) {
      |        ~~~~~~~~~~~~~~             
supertrees.cpp:115:3: note: in expansion of macro 'forn'
  115 |   forn(i,cycle.size()) {
      |   ^~~~
supertrees.cpp:4:34: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define forn(i,n) for (int i=0; i<n; ++i)
......
  131 |     forn(i,one.size()) {
      |          ~~~~~~~~~~~~             
supertrees.cpp:131:5: note: in expansion of macro 'forn'
  131 |     forn(i,one.size()) {
      |     ^~~~
supertrees.cpp:4:34: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define forn(i,n) for (int i=0; i<n; ++i)
......
  132 |       forn(j,one.size()) {
      |            ~~~~~~~~~~~~           
supertrees.cpp:132:7: note: in expansion of macro 'forn'
  132 |       forn(j,one.size()) {
      |       ^~~~
supertrees.cpp:4:34: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define forn(i,n) for (int i=0; i<n; ++i)
......
  137 |     forn(i,one.size()) edges.pb(mp(v,one[i]));
      |          ~~~~~~~~~~~~             
supertrees.cpp:137:5: note: in expansion of macro 'forn'
  137 |     forn(i,one.size()) edges.pb(mp(v,one[i]));
      |     ^~~~
supertrees.cpp:4:34: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define forn(i,n) for (int i=0; i<n; ++i)
......
  139 |     forn(i,one.size()) if (vis[one[i]]!=10) return 0;
      |          ~~~~~~~~~~~~             
supertrees.cpp:139:5: note: in expansion of macro 'forn'
  139 |     forn(i,one.size()) if (vis[one[i]]!=10) return 0;
      |     ^~~~
supertrees.cpp:4:34: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define forn(i,n) for (int i=0; i<n; ++i)
......
  140 |     forn(i,two.size()) if (vis[two[i]]!=10) return 0;
      |          ~~~~~~~~~~~~             
supertrees.cpp:140:5: note: in expansion of macro 'forn'
  140 |     forn(i,two.size()) if (vis[two[i]]!=10) return 0;
      |     ^~~~
supertrees.cpp:4:34: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define forn(i,n) for (int i=0; i<n; ++i)
......
  147 |       forn(i,one.size()) {
      |            ~~~~~~~~~~~~           
supertrees.cpp:147:7: note: in expansion of macro 'forn'
  147 |       forn(i,one.size()) {
      |       ^~~~
supertrees.cpp:4:34: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define forn(i,n) for (int i=0; i<n; ++i)
......
  148 |         forn(j,two.size()) {
      |              ~~~~~~~~~~~~         
supertrees.cpp:148:9: note: in expansion of macro 'forn'
  148 |         forn(j,two.size()) {
      |         ^~~~
supertrees.cpp:4:34: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define forn(i,n) for (int i=0; i<n; ++i)
......
  158 |   forn(i,cycle.size()) {
      |        ~~~~~~~~~~~~~~             
supertrees.cpp:158:3: note: in expansion of macro 'forn'
  158 |   forn(i,cycle.size()) {
      |   ^~~~
supertrees.cpp:4:34: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define forn(i,n) for (int i=0; i<n; ++i)
......
  164 |   forn(i,one.size()) vis[one[i]]=1;
      |        ~~~~~~~~~~~~               
supertrees.cpp:164:3: note: in expansion of macro 'forn'
  164 |   forn(i,one.size()) vis[one[i]]=1;
      |   ^~~~
supertrees.cpp:4:34: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define forn(i,n) for (int i=0; i<n; ++i)
......
  165 |   forn(i,two.size()) vis[two[i]]=1;
      |        ~~~~~~~~~~~~               
supertrees.cpp:165:3: note: in expansion of macro 'forn'
  165 |   forn(i,two.size()) vis[two[i]]=1;
      |   ^~~~
/usr/bin/ld: /tmp/ccCIdrIa.o: in function `main':
grader.cpp:(.text.startup+0x38a): undefined reference to `construct(std::vector<std::vector<int, std::allocator<int> >, std::allocator<std::vector<int, std::allocator<int> > > >)'
collect2: error: ld returned 1 exit status