5563 2023. 07. 27 11:22:11 zsombor Rajz cpp17 Elfogadva 100/100 149ms 29872 KiB
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
using ll=long long;

struct point{
    ll x,y;
};

struct edge{
    int A,B,W;
    ll D;
    edge(int a,int b,int w,ll d){
        A=a;B=b;W=w;D=d;
    }
};

int n;
vector <point> v(1e3);
vector <edge> ed;
vector <int> p(2e3,0);
vector <int> sz(2e3,1);

int sgn(ll num){
    return (num>0)-(num<0);
}

int turn(point a, point b,point c){
    return sgn((c.y-a.y)*(b.x-a.x)-(b.y-a.y)*(c.x-a.x));
}

int intersection(point a,point b){
    point c,d;
    c.x=c.y=0;
    d.x=1;d.y=1e9+1;
    if (turn(a,b,c)*turn(a,b,d)>-1) return 0;
    if (turn(c,d,a)*turn(c,d,b)>-1) return 0;
    return 1;
}

ll dist(point a, point b){
    return (a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);
}

bool srt(edge e,edge f){
    return (e.D<f.D?true:false);
}

int holvan(int a){
    return (a==p[a]?a:p[a]=holvan(p[a]));
}

void unio(int a,int b){
    a=holvan(a);
    b=holvan(b);
    if (a==b) return;
    if (sz[a]>sz[b]) swap(a,b);
    p[a]=b;
    sz[b]+=sz[a];
}

bool UNIO(edge e){
    if (e.W){
        unio(e.A,e.B+n);
        unio(e.A+n,e.B);
    }else{
        unio(e.A,e.B);
        unio(e.A+n,e.B+n);
    }
    return (holvan(e.A)==holvan(e.A+n)?true:false);
}

int main(){
    cin >> n;
    for (int i=0;i<n;i++){
        cin >> v[i].x >> v[i].y;
        for (int j=0;j<i;j++){
            ed.push_back(edge(i,j,intersection(v[i],v[j]),dist(v[i],v[j])));
        }
    }
    sort(ed.begin(),ed.end(),srt);
    for (int i=0;i<2*n;i++) p[i]=i;
    for (edge e : ed){
        if (UNIO(e)){
            cout << e.D;
            return 0;
        }
    }
    cout << -1;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1908 KiB
2 Elfogadva 3ms 2244 KiB
subtask2 20/20
3 Elfogadva 3ms 2508 KiB
4 Elfogadva 3ms 2720 KiB
5 Elfogadva 3ms 2960 KiB
6 Elfogadva 3ms 3164 KiB
7 Elfogadva 2ms 3000 KiB
8 Elfogadva 3ms 3208 KiB
9 Elfogadva 3ms 3424 KiB
10 Elfogadva 3ms 3512 KiB
11 Elfogadva 2ms 3588 KiB
12 Elfogadva 2ms 3508 KiB
subtask3 20/20
13 Elfogadva 3ms 2508 KiB
14 Elfogadva 3ms 2720 KiB
15 Elfogadva 3ms 2960 KiB
16 Elfogadva 3ms 3164 KiB
17 Elfogadva 2ms 3000 KiB
18 Elfogadva 3ms 3208 KiB
19 Elfogadva 3ms 3424 KiB
20 Elfogadva 3ms 3512 KiB
21 Elfogadva 2ms 3588 KiB
22 Elfogadva 2ms 3508 KiB
23 Elfogadva 3ms 3652 KiB
24 Elfogadva 2ms 3736 KiB
25 Elfogadva 3ms 3976 KiB
26 Elfogadva 2ms 3860 KiB
27 Elfogadva 3ms 4008 KiB
28 Elfogadva 3ms 3928 KiB
29 Elfogadva 3ms 3988 KiB
30 Elfogadva 3ms 4064 KiB
31 Elfogadva 2ms 4128 KiB
subtask4 20/20
32 Elfogadva 3ms 2508 KiB
33 Elfogadva 3ms 2720 KiB
34 Elfogadva 3ms 2960 KiB
35 Elfogadva 3ms 3164 KiB
36 Elfogadva 2ms 3000 KiB
37 Elfogadva 3ms 3208 KiB
38 Elfogadva 3ms 3424 KiB
39 Elfogadva 3ms 3512 KiB
40 Elfogadva 2ms 3588 KiB
41 Elfogadva 2ms 3508 KiB
42 Elfogadva 3ms 3652 KiB
43 Elfogadva 2ms 3736 KiB
44 Elfogadva 3ms 3976 KiB
45 Elfogadva 2ms 3860 KiB
46 Elfogadva 3ms 4008 KiB
47 Elfogadva 3ms 3928 KiB
48 Elfogadva 3ms 3988 KiB
49 Elfogadva 3ms 4064 KiB
50 Elfogadva 2ms 4128 KiB
51 Elfogadva 4ms 4508 KiB
52 Elfogadva 3ms 4524 KiB
53 Elfogadva 4ms 4536 KiB
54 Elfogadva 4ms 4532 KiB
55 Elfogadva 4ms 4536 KiB
56 Elfogadva 4ms 4516 KiB
57 Elfogadva 4ms 4652 KiB
58 Elfogadva 4ms 4792 KiB
59 Elfogadva 4ms 4728 KiB
60 Elfogadva 4ms 5000 KiB
61 Elfogadva 3ms 4960 KiB
62 Elfogadva 4ms 5064 KiB
63 Elfogadva 4ms 5332 KiB
64 Elfogadva 4ms 5296 KiB
65 Elfogadva 3ms 5316 KiB
66 Elfogadva 4ms 5316 KiB
67 Elfogadva 4ms 5296 KiB
68 Elfogadva 4ms 5288 KiB
69 Elfogadva 4ms 5316 KiB
70 Elfogadva 4ms 5340 KiB
subtask5 40/40
71 Elfogadva 3ms 2508 KiB
72 Elfogadva 3ms 2720 KiB
73 Elfogadva 3ms 2960 KiB
74 Elfogadva 3ms 3164 KiB
75 Elfogadva 2ms 3000 KiB
76 Elfogadva 3ms 3208 KiB
77 Elfogadva 3ms 3424 KiB
78 Elfogadva 3ms 3512 KiB
79 Elfogadva 2ms 3588 KiB
80 Elfogadva 2ms 3508 KiB
81 Elfogadva 3ms 3652 KiB
82 Elfogadva 2ms 3736 KiB
83 Elfogadva 3ms 3976 KiB
84 Elfogadva 2ms 3860 KiB
85 Elfogadva 3ms 4008 KiB
86 Elfogadva 3ms 3928 KiB
87 Elfogadva 3ms 3988 KiB
88 Elfogadva 3ms 4064 KiB
89 Elfogadva 2ms 4128 KiB
90 Elfogadva 4ms 4508 KiB
91 Elfogadva 3ms 4524 KiB
92 Elfogadva 4ms 4536 KiB
93 Elfogadva 4ms 4532 KiB
94 Elfogadva 4ms 4536 KiB
95 Elfogadva 4ms 4516 KiB
96 Elfogadva 4ms 4652 KiB
97 Elfogadva 4ms 4792 KiB
98 Elfogadva 4ms 4728 KiB
99 Elfogadva 4ms 5000 KiB
100 Elfogadva 3ms 4960 KiB
101 Elfogadva 4ms 5064 KiB
102 Elfogadva 4ms 5332 KiB
103 Elfogadva 4ms 5296 KiB
104 Elfogadva 3ms 5316 KiB
105 Elfogadva 4ms 5316 KiB
106 Elfogadva 4ms 5296 KiB
107 Elfogadva 4ms 5288 KiB
108 Elfogadva 4ms 5316 KiB
109 Elfogadva 4ms 5340 KiB
110 Elfogadva 126ms 29524 KiB
111 Elfogadva 126ms 29600 KiB
112 Elfogadva 126ms 29596 KiB
113 Elfogadva 127ms 29468 KiB
114 Elfogadva 126ms 29376 KiB
115 Elfogadva 126ms 29376 KiB
116 Elfogadva 136ms 29456 KiB
117 Elfogadva 136ms 29372 KiB
118 Elfogadva 133ms 29452 KiB
119 Elfogadva 133ms 29524 KiB
120 Elfogadva 136ms 29524 KiB
121 Elfogadva 134ms 29440 KiB
122 Elfogadva 131ms 29520 KiB
123 Elfogadva 136ms 29520 KiB
124 Elfogadva 135ms 29444 KiB
125 Elfogadva 133ms 29524 KiB
126 Elfogadva 141ms 29452 KiB
127 Elfogadva 143ms 29376 KiB
128 Elfogadva 144ms 29448 KiB
129 Elfogadva 141ms 29444 KiB
130 Elfogadva 144ms 29784 KiB
131 Elfogadva 115ms 29656 KiB
132 Elfogadva 149ms 29872 KiB