Submission #19167587
Source Code Expand
/**
* Dont raise your voice, improve your argument.
* --Desmond Tutu
*/
#include <bits/stdc++.h>
using namespace std;
const bool ready = []() {
ios_base::sync_with_stdio(false);
cin.tie(0);
cout << fixed << setprecision(12);
return true;
}
();
using ld=long double;
const ld PI = acos(-1);
using ll= long long;
#define int ll
#define all(v) (v).begin(), (v).end()
#define fori(n) for(int i=0; i<int(n); i++)
#define cini(i) int i; cin>>i;
#define cins(s) string s; cin>>s;
#define cind(d) ld d; cin>>d;
#define cinai(a,n) vi a(n); fori(n) { cin>>a[i]; }
#define cinas(s,n) vs s(n); fori(n) { cin>>s[i]; }
#define cinad(a,n) vd a(n); fori(n) { cin>>a[i]; }
using pii= pair<int, int>;
using pdd= pair<ld, ld>;
using vd= vector<ld>;
using vb= vector<bool>;
using vi= vector<int>;
using vvi= vector<vi>;
using vs= vector<string>;
#define endl "\n"
/* We can add a vertex to a group if that vertex has edge to all members.
*
* We can merge two groups if all members of the group have eges to all
* members of other group.
*/
const int INF=1e9;
void solve() {
cini(n);
cini(m);
vector<vb> adj(n, vb(n));
for(int i=0; i<m; i++) {
cini(a);
a--;
cini(b);
b--;
adj[a][b]=true;
adj[b][a]=true;
}
int ans=INF;
function<void(vvi,int)> go=[&](vvi groups, const int v) {
/* we can add the current vertex to each group possible, or to a new group */
/*
cerr<<"sz="<<groups.size()<<" groups="<<endl;
for(auto vec : groups) {
for(int j : vec)
cerr<<j+1<<" ";
cerr<<endl;
}
*/
if(v==n) {
ans=min(ans, (int)groups.size());
return;
}
if((int)groups.size()>=ans)
return;
for(size_t i=0; i<groups.size(); i++) {
bool ok=true;
for(int g : groups[i]) {
if(!adj[v][g]) {
ok=false;
break;
}
}
if(ok) {
groups[i].push_back(v);
//cerr<<"adding v="<<v+1<<" to group="<<i<<endl;
go(groups, v+1);
groups[i].pop_back();
}
}
vi ngroup;
ngroup.push_back(v);
groups.push_back(ngroup);
go(groups, v+1);
};
vvi g;
go(g, 0);
cout<<ans<<endl;
}
signed main() {
solve();
}
// FIRST THINK, THEN CODE
// DO NOT JUMP BETWEEN PROBLEMS
Submission Info
| Submission Time | |
|---|---|
| Task | F - Close Group |
| User | spookywooky |
| Language | C++ (GCC 9.2.1) |
| Score | 600 |
| Code Size | 2684 Byte |
| Status | AC |
| Exec Time | 7 ms |
| Memory | 3656 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 600 / 600 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | 01_sample.txt, 02_sample.txt, 03_sample.txt, 04_sample.txt |
| All | 01_sample.txt, 02_sample.txt, 03_sample.txt, 04_sample.txt, 05_tiny.txt, 06_tiny.txt, 07_tiny.txt, 08_tiny.txt, 09_tiny.txt, 10_tiny.txt, 11_tiny.txt, 12_small.txt, 13_small.txt, 14_small.txt, 15_small.txt, 16_small.txt, 17_small.txt, 18_small.txt, 19_small.txt, 20_small.txt, 21_small.txt, 22_small.txt, 23_small.txt, 24_small.txt, 25_small.txt, 26_small.txt, 27_large.txt, 28_large.txt, 29_large.txt, 30_large.txt, 31_large.txt, 32_large.txt, 33_large.txt, 34_large.txt, 35_large.txt, 36_large.txt, 37_large.txt, 38_large.txt, 39_large.txt, 40_large.txt, 41_large.txt, 42_max.txt, 43_max.txt, 44_max.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| 01_sample.txt | AC | 7 ms | 3552 KiB |
| 02_sample.txt | AC | 3 ms | 3540 KiB |
| 03_sample.txt | AC | 2 ms | 3560 KiB |
| 04_sample.txt | AC | 2 ms | 3612 KiB |
| 05_tiny.txt | AC | 1 ms | 3636 KiB |
| 06_tiny.txt | AC | 2 ms | 3560 KiB |
| 07_tiny.txt | AC | 2 ms | 3496 KiB |
| 08_tiny.txt | AC | 2 ms | 3552 KiB |
| 09_tiny.txt | AC | 2 ms | 3556 KiB |
| 10_tiny.txt | AC | 2 ms | 3592 KiB |
| 11_tiny.txt | AC | 2 ms | 3604 KiB |
| 12_small.txt | AC | 2 ms | 3556 KiB |
| 13_small.txt | AC | 3 ms | 3484 KiB |
| 14_small.txt | AC | 2 ms | 3596 KiB |
| 15_small.txt | AC | 2 ms | 3500 KiB |
| 16_small.txt | AC | 2 ms | 3600 KiB |
| 17_small.txt | AC | 2 ms | 3632 KiB |
| 18_small.txt | AC | 3 ms | 3540 KiB |
| 19_small.txt | AC | 1 ms | 3472 KiB |
| 20_small.txt | AC | 2 ms | 3592 KiB |
| 21_small.txt | AC | 5 ms | 3492 KiB |
| 22_small.txt | AC | 3 ms | 3476 KiB |
| 23_small.txt | AC | 6 ms | 3592 KiB |
| 24_small.txt | AC | 3 ms | 3644 KiB |
| 25_small.txt | AC | 2 ms | 3552 KiB |
| 26_small.txt | AC | 3 ms | 3544 KiB |
| 27_large.txt | AC | 2 ms | 3656 KiB |
| 28_large.txt | AC | 3 ms | 3604 KiB |
| 29_large.txt | AC | 2 ms | 3652 KiB |
| 30_large.txt | AC | 2 ms | 3600 KiB |
| 31_large.txt | AC | 3 ms | 3480 KiB |
| 32_large.txt | AC | 2 ms | 3620 KiB |
| 33_large.txt | AC | 2 ms | 3568 KiB |
| 34_large.txt | AC | 3 ms | 3656 KiB |
| 35_large.txt | AC | 2 ms | 3604 KiB |
| 36_large.txt | AC | 6 ms | 3564 KiB |
| 37_large.txt | AC | 1 ms | 3488 KiB |
| 38_large.txt | AC | 2 ms | 3492 KiB |
| 39_large.txt | AC | 4 ms | 3604 KiB |
| 40_large.txt | AC | 3 ms | 3544 KiB |
| 41_large.txt | AC | 3 ms | 3556 KiB |
| 42_max.txt | AC | 3 ms | 3488 KiB |
| 43_max.txt | AC | 2 ms | 3568 KiB |
| 44_max.txt | AC | 2 ms | 3552 KiB |