답안 #246249

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
246249 2020-07-08T12:43:15 Z m3r8 Political Development (BOI17_politicaldevelopment) C++14
0 / 100
172 ms 311672 KB
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <set>
#include <bitset>
#include <utility>

#define N 50100
#define ii std::pair<int,int>


std::set<int> tst[N];
std::vector<int> adj[N];
int k;
std::vector<std::bitset<N>> add(N);

int cclq(std::bitset<N> akt, int idx, int depth){
  int mx = 0;

  if(akt.count() < depth)return depth-1;
  else if(depth >= k)return depth;
  else{
    for(int i = 0;i<adj[idx].size();i++){
      mx = std::max(mx,cclq(akt&add[adj[idx][i]],adj[idx][i],depth+1));
    };
  };
  return mx;
};

int clq(std::vector<int> akt, int depth, int idx){
  if(!akt.size() ||depth == k)return depth;
  else{
    int mx = 0;
    for(int i = 0;i<akt.size();i++){
      std::vector<int> nxt;  
      for(int j = i+1;j<akt.size();j++){
        if(tst[akt[i]].count(akt[j])){
          nxt.push_back(akt[j]);  
        };
      };
      mx = std::max(mx,clq(nxt,depth+1,idx));
    };
    return mx;
  };
};
std::vector<ii> edg;
int main(void){
  int n;  
  scanf("%d %d",&n,&k);

  int d;
  int x;
  for(int i = 0;i<n;i++){
    add[i][i] = 1;
    scanf("%d",&d);
    for(int j = 0;j<d;j++){
      scanf("%d",&x);
      add[i][x] = 1;
      if(x > i){
        edg.push_back({i,x});
        adj[i].push_back(x);
      };
      tst[i].insert(x);
    };
  };
  int mx = 0;
  if(k > 10){
    for(int i = 0;i<n;i++){
      int tmp = clq(adj[i],1,i);
      //printf("%d %d %d\n",i,tmp,adj[i].size());
      mx = std::max(tmp,mx);
      if(mx == k)break;
    };
  }else{
    for(auto i: edg){
      mx = 2;
      int tmp = cclq(add[i.first]&add[i.second],i.second,2);
      mx = std::max(tmp,mx);
      if(mx == k)break;
    };  
  };
  printf("%d\n",mx);
  return 0;
};

Compilation message

politicaldevelopment.cpp: In function 'int cclq(std::bitset<50100>, int, int)':
politicaldevelopment.cpp:20:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   if(akt.count() < depth)return depth-1;
      ~~~~~~~~~~~~^~~~~~~
politicaldevelopment.cpp:23:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 0;i<adj[idx].size();i++){
                   ~^~~~~~~~~~~~~~~~
politicaldevelopment.cpp: In function 'int clq(std::vector<int>, int, int)':
politicaldevelopment.cpp:34:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 0;i<akt.size();i++){
                   ~^~~~~~~~~~~
politicaldevelopment.cpp:36:24: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
       for(int j = i+1;j<akt.size();j++){
                       ~^~~~~~~~~~~
politicaldevelopment.cpp: In function 'int main()':
politicaldevelopment.cpp:49:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d %d",&n,&k);
   ~~~~~^~~~~~~~~~~~~~~
politicaldevelopment.cpp:55:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&d);
     ~~~~~^~~~~~~~~
politicaldevelopment.cpp:57:12: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
       scanf("%d",&x);
       ~~~~~^~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 160 ms 311032 KB Output is correct
2 Correct 153 ms 310904 KB Output is correct
3 Correct 163 ms 311544 KB Output is correct
4 Correct 164 ms 311544 KB Output is correct
5 Correct 159 ms 311672 KB Output is correct
6 Correct 172 ms 311548 KB Output is correct
7 Correct 171 ms 311544 KB Output is correct
8 Incorrect 155 ms 311032 KB Output isn't correct
9 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 160 ms 311032 KB Output is correct
2 Correct 153 ms 310904 KB Output is correct
3 Correct 163 ms 311544 KB Output is correct
4 Correct 164 ms 311544 KB Output is correct
5 Correct 159 ms 311672 KB Output is correct
6 Correct 172 ms 311548 KB Output is correct
7 Correct 171 ms 311544 KB Output is correct
8 Incorrect 155 ms 311032 KB Output isn't correct
9 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 157 ms 310932 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 160 ms 311032 KB Output is correct
2 Correct 153 ms 310904 KB Output is correct
3 Correct 163 ms 311544 KB Output is correct
4 Correct 164 ms 311544 KB Output is correct
5 Correct 159 ms 311672 KB Output is correct
6 Correct 172 ms 311548 KB Output is correct
7 Correct 171 ms 311544 KB Output is correct
8 Incorrect 155 ms 311032 KB Output isn't correct
9 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 160 ms 311032 KB Output is correct
2 Correct 153 ms 310904 KB Output is correct
3 Correct 163 ms 311544 KB Output is correct
4 Correct 164 ms 311544 KB Output is correct
5 Correct 159 ms 311672 KB Output is correct
6 Correct 172 ms 311548 KB Output is correct
7 Correct 171 ms 311544 KB Output is correct
8 Incorrect 155 ms 311032 KB Output isn't correct
9 Halted 0 ms 0 KB -