Submission #4463037
Source Code Expand
#include <bits/stdc++.h> using namespace std; using ll = long long; #define rep(i,n) for(int (i)=0;(i)<(int)(n);++(i)) #define all(x) (x).begin(),(x).end() #define pb push_back #define fi first #define se second #define dbg(x) cout<<#x" = "<<((x))<<endl template<class T,class U> ostream& operator<<(ostream& o, const pair<T,U> &p){o<<"("<<p.fi<<","<<p.se<<")";return o;} template<class T> ostream& operator<<(ostream& o, const vector<T> &v){o<<"[";for(T t:v){o<<t<<",";}o<<"]";return o;} struct UF{ int n; //正だったらその頂点の親,負だったら根で連結成分の個数 vector<int> d; UF() {} UF(int N):n(N), d(N,-1){} int root(int v){ if(d[v]<0) return v; return d[v]=root(d[v]); } bool unite(int X,int Y){ X=root(X); Y=root(Y); if(X==Y) return false; if(size(X) < size(Y)) swap(X,Y); d[X]+=d[Y]; d[Y]=X; return true; } int size(int v){ return -d[root(v)]; } bool same(int X,int Y){ return root(X)==root(Y); } }; using P = pair<int,int>; using E = pair<P,P>; const int dx[4]={1,-1,0,0}; const int dy[4]={0,0,1,-1}; int main(){ int n; cin >>n; set<P> points; set<E> edges; int v = 0; map<P,int> p2id; UF uf(4*n); rep(pp,n){ int x,y; cin >>x >>y; vector<P> z; for(P d:vector<P>({{0,0},{1,0},{1,1},{0,1}})){ z.pb({x+d.fi, y+d.se}); } // dbg(v); rep(i,4){ points.insert(z[i]); if(!p2id.count(z[i])){ p2id[z[i]] = v; ++v; } } rep(i,4){ P p = z[i], q = z[(i+1)%4]; edges.insert({min(p,q),max(p,q)}); uf.unite(p2id[p], p2id[q]); } } set<int> cc_idx; rep(i,v) cc_idx.insert(uf.root(i)); int cc = cc_idx.size(); int e = edges.size(); int f = n+1; // v-e+(f+g) = 2 int g = 2-v+e-f; cout << g + cc-1 << "\n"; return 0; }
Submission Info
Submission Time | |
---|---|
Task | I - Topology |
User | imulan |
Language | C++14 (GCC 5.4.1) |
Score | 100 |
Code Size | 2100 Byte |
Status | AC |
Exec Time | 688 ms |
Memory | 75264 KB |
Judge Result
Set Name | All | ||
---|---|---|---|
Score / Max Score | 100 / 100 | ||
Status |
|
Set Name | Test Cases |
---|---|
All | 1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 3, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 4, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 5, 50, 6, 7, 8, 9 |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
1 | AC | 1 ms | 256 KB |
10 | AC | 2 ms | 384 KB |
11 | AC | 1 ms | 256 KB |
12 | AC | 1 ms | 256 KB |
13 | AC | 1 ms | 256 KB |
14 | AC | 632 ms | 54144 KB |
15 | AC | 675 ms | 65536 KB |
16 | AC | 688 ms | 75264 KB |
17 | AC | 621 ms | 50048 KB |
18 | AC | 410 ms | 34048 KB |
19 | AC | 412 ms | 34048 KB |
2 | AC | 1 ms | 256 KB |
20 | AC | 446 ms | 35712 KB |
21 | AC | 446 ms | 35712 KB |
22 | AC | 465 ms | 39168 KB |
23 | AC | 461 ms | 37376 KB |
24 | AC | 504 ms | 39040 KB |
25 | AC | 489 ms | 39040 KB |
26 | AC | 509 ms | 40704 KB |
27 | AC | 521 ms | 40704 KB |
28 | AC | 556 ms | 42368 KB |
29 | AC | 549 ms | 42368 KB |
3 | AC | 1 ms | 256 KB |
30 | AC | 525 ms | 42496 KB |
31 | AC | 530 ms | 42368 KB |
32 | AC | 523 ms | 42368 KB |
33 | AC | 13 ms | 2176 KB |
34 | AC | 26 ms | 4352 KB |
35 | AC | 55 ms | 8448 KB |
36 | AC | 114 ms | 16512 KB |
37 | AC | 71 ms | 8832 KB |
38 | AC | 1 ms | 256 KB |
39 | AC | 32 ms | 4224 KB |
4 | AC | 2 ms | 256 KB |
40 | AC | 95 ms | 11264 KB |
41 | AC | 23 ms | 2816 KB |
42 | AC | 29 ms | 3456 KB |
43 | AC | 37 ms | 4352 KB |
44 | AC | 10 ms | 1408 KB |
45 | AC | 69 ms | 7552 KB |
46 | AC | 14 ms | 1664 KB |
47 | AC | 94 ms | 9984 KB |
48 | AC | 95 ms | 10240 KB |
49 | AC | 14 ms | 1792 KB |
5 | AC | 3 ms | 512 KB |
50 | AC | 7 ms | 1024 KB |
6 | AC | 3 ms | 512 KB |
7 | AC | 1 ms | 256 KB |
8 | AC | 1 ms | 256 KB |
9 | AC | 2 ms | 384 KB |