Submission #101246

#TimeUsernameProblemLanguageResultExecution timeMemory
101246cheehengICC (CEOI16_icc)C++14
0 / 100
354 ms692 KiB
#include "icc.h" #include <bits/stdc++.h> using namespace std; //int query(int a,int b,int* A,int *B); //void setRoad(int a,int b); int a[105]; int b[105]; int P[105]; bool hasEdge[105][105]; void run(int n) { for(int i = 0; i < n; i ++){ P[i] = i+1; } for(int k = 1; k < n; k ++){ for(int i = 1; i <= n; i ++){ int cnt = 0; for(int j = i+1; j <= n; j ++){ if(!hasEdge[j][i]){ b[cnt++] = j; } } a[0] = i; if(query(1, cnt, a, b)){ for(int j = i+1; j <= n; j ++){ b[0] = j; if(!hasEdge[j][i]){ if(query(1, 1, a, b)){ hasEdge[j][i] = true; hasEdge[i][j] = true; //printf("%d %d\n", i, j); setRoad(i, j); } } } break; } } } } /* vector<int>adjlist[100]; int n; int current_a,current_b; int calls=0; int query(int a,int b,int* A,int *B){ calls++; vector<bool>cities(n); for(int i=0;i<b;i++){ cities[B[i]]=1; } for(int i=0;i<a;i++){ for(int y:adjlist[A[i]]){ if(cities[y])return 1; } } return 0; } int roads = 0; void setRoad(int a,int b){ roads++; if(a>b)swap(a,b); if(current_a>current_b)swap(current_a,current_b); if(a!=current_a || b!=current_b){ printf("Wrong edge\n"); exit(0); } if(roads==n-1){ printf("OK\n"); printf(""); exit(0); } scanf("%d%d",&current_a,&current_b); adjlist[current_a].push_back(current_b); adjlist[current_b].push_back(current_a); } int main(){ scanf("%d",&n); scanf("%d%d",&current_a,&current_b); adjlist[current_a].push_back(current_b); adjlist[current_b].push_back(current_a); run(n); } */
#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...