55632023-07-27 11:22:11zsomborRajzcpp17Elfogadva 100/100149ms29872 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ÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1908 KiB
2Elfogadva3ms2244 KiB
subtask220/20
3Elfogadva3ms2508 KiB
4Elfogadva3ms2720 KiB
5Elfogadva3ms2960 KiB
6Elfogadva3ms3164 KiB
7Elfogadva2ms3000 KiB
8Elfogadva3ms3208 KiB
9Elfogadva3ms3424 KiB
10Elfogadva3ms3512 KiB
11Elfogadva2ms3588 KiB
12Elfogadva2ms3508 KiB
subtask320/20
13Elfogadva3ms2508 KiB
14Elfogadva3ms2720 KiB
15Elfogadva3ms2960 KiB
16Elfogadva3ms3164 KiB
17Elfogadva2ms3000 KiB
18Elfogadva3ms3208 KiB
19Elfogadva3ms3424 KiB
20Elfogadva3ms3512 KiB
21Elfogadva2ms3588 KiB
22Elfogadva2ms3508 KiB
23Elfogadva3ms3652 KiB
24Elfogadva2ms3736 KiB
25Elfogadva3ms3976 KiB
26Elfogadva2ms3860 KiB
27Elfogadva3ms4008 KiB
28Elfogadva3ms3928 KiB
29Elfogadva3ms3988 KiB
30Elfogadva3ms4064 KiB
31Elfogadva2ms4128 KiB
subtask420/20
32Elfogadva3ms2508 KiB
33Elfogadva3ms2720 KiB
34Elfogadva3ms2960 KiB
35Elfogadva3ms3164 KiB
36Elfogadva2ms3000 KiB
37Elfogadva3ms3208 KiB
38Elfogadva3ms3424 KiB
39Elfogadva3ms3512 KiB
40Elfogadva2ms3588 KiB
41Elfogadva2ms3508 KiB
42Elfogadva3ms3652 KiB
43Elfogadva2ms3736 KiB
44Elfogadva3ms3976 KiB
45Elfogadva2ms3860 KiB
46Elfogadva3ms4008 KiB
47Elfogadva3ms3928 KiB
48Elfogadva3ms3988 KiB
49Elfogadva3ms4064 KiB
50Elfogadva2ms4128 KiB
51Elfogadva4ms4508 KiB
52Elfogadva3ms4524 KiB
53Elfogadva4ms4536 KiB
54Elfogadva4ms4532 KiB
55Elfogadva4ms4536 KiB
56Elfogadva4ms4516 KiB
57Elfogadva4ms4652 KiB
58Elfogadva4ms4792 KiB
59Elfogadva4ms4728 KiB
60Elfogadva4ms5000 KiB
61Elfogadva3ms4960 KiB
62Elfogadva4ms5064 KiB
63Elfogadva4ms5332 KiB
64Elfogadva4ms5296 KiB
65Elfogadva3ms5316 KiB
66Elfogadva4ms5316 KiB
67Elfogadva4ms5296 KiB
68Elfogadva4ms5288 KiB
69Elfogadva4ms5316 KiB
70Elfogadva4ms5340 KiB
subtask540/40
71Elfogadva3ms2508 KiB
72Elfogadva3ms2720 KiB
73Elfogadva3ms2960 KiB
74Elfogadva3ms3164 KiB
75Elfogadva2ms3000 KiB
76Elfogadva3ms3208 KiB
77Elfogadva3ms3424 KiB
78Elfogadva3ms3512 KiB
79Elfogadva2ms3588 KiB
80Elfogadva2ms3508 KiB
81Elfogadva3ms3652 KiB
82Elfogadva2ms3736 KiB
83Elfogadva3ms3976 KiB
84Elfogadva2ms3860 KiB
85Elfogadva3ms4008 KiB
86Elfogadva3ms3928 KiB
87Elfogadva3ms3988 KiB
88Elfogadva3ms4064 KiB
89Elfogadva2ms4128 KiB
90Elfogadva4ms4508 KiB
91Elfogadva3ms4524 KiB
92Elfogadva4ms4536 KiB
93Elfogadva4ms4532 KiB
94Elfogadva4ms4536 KiB
95Elfogadva4ms4516 KiB
96Elfogadva4ms4652 KiB
97Elfogadva4ms4792 KiB
98Elfogadva4ms4728 KiB
99Elfogadva4ms5000 KiB
100Elfogadva3ms4960 KiB
101Elfogadva4ms5064 KiB
102Elfogadva4ms5332 KiB
103Elfogadva4ms5296 KiB
104Elfogadva3ms5316 KiB
105Elfogadva4ms5316 KiB
106Elfogadva4ms5296 KiB
107Elfogadva4ms5288 KiB
108Elfogadva4ms5316 KiB
109Elfogadva4ms5340 KiB
110Elfogadva126ms29524 KiB
111Elfogadva126ms29600 KiB
112Elfogadva126ms29596 KiB
113Elfogadva127ms29468 KiB
114Elfogadva126ms29376 KiB
115Elfogadva126ms29376 KiB
116Elfogadva136ms29456 KiB
117Elfogadva136ms29372 KiB
118Elfogadva133ms29452 KiB
119Elfogadva133ms29524 KiB
120Elfogadva136ms29524 KiB
121Elfogadva134ms29440 KiB
122Elfogadva131ms29520 KiB
123Elfogadva136ms29520 KiB
124Elfogadva135ms29444 KiB
125Elfogadva133ms29524 KiB
126Elfogadva141ms29452 KiB
127Elfogadva143ms29376 KiB
128Elfogadva144ms29448 KiB
129Elfogadva141ms29444 KiB
130Elfogadva144ms29784 KiB
131Elfogadva115ms29656 KiB
132Elfogadva149ms29872 KiB