int main(){
    
    scanf("%d %d %d %d", &n, &m, &k, &Q);

    for(int i = 0; i < Q; i++){
        int a, b, c;
        scanf("%d %d %d", &a, &b, &c);
        q.eb(c, a, b);
    }

    sort(q.begin(), q.end());

    int lo = 0, hi = 1000000001;

    while(lo < hi){
        int mid = (lo + hi) / 2;

        if(f(mid)) hi = mid;
        else lo = mid+1;
    }

    if(lo == 1000000001) lo = -1;

    printf("%d\n", lo);

    return 0;
}
Example #2
0
int main(){
    int n,m; cin>>n>>m;
    while(m--){
        int u,v; ll c; cin>>u>>v>>c;
        pq.push({c,pii(u,v)});
        E.eb(c,pii(u,v));
    }
    djs.init(1006);
    int pointsssss=1;
    ll firstttttt=0;
    while(pq.size()){
        if(!djs.C(pq.top().Y.X,pq.top().Y.Y)){
            G[pq.top().Y.X].eb(pq.top().Y.Y,pq.top().X);
            G[pq.top().Y.Y].eb(pq.top().Y.X,pq.top().X);
            ++pointsssss;
            firstttttt+=pq.top().X;
            djs.U(pq.top().Y.X,pq.top().Y.Y);
        } pq.pop();
    } if(pointsssss<n)return cout<<"-1 -1"<<endl,0;
    if(E.size()==n-1)return cout<<firstttttt<<" -1"<<endl,0;
    dfs(1,1,1);
    PDE1(firstttttt);
    ll diffffffff=1000000000000000000ll;
    for(auto i:E){
        if(p[0][i.Y.X]==i.Y.Y || p[0][i.Y.Y]==i.Y.X)continue;
        PDE1(i);
        diffffffff=min(diffffffff,i.X-lca(i.Y.X,i.Y.Y));
    } cout<<firstttttt<<" "<<firstttttt+diffffffff<<endl;
}
Example #3
0
int main(){
    int n; ld d; cin>>n>>d;
    for(int i=0;i<n;++i){
        ld x,y; cin>>x>>y; pt.eb(x,y);
    }
    sort(pt.begin(),pt.end(),[](const pair<ld,ld> &a,const pair<ld,ld> &b){return a.X==b.X?abs(a.Y)>abs(b.Y):a.X<b.X;});
    int cnt=0;
    ld lx=-1e20;
    for(int ii=0;ii<pt.size();++ii){
        auto i=pt[ii];
        if(dist(lx,0,i.X,i.Y)>d){
            ++cnt;
            nc[ii]=1;
            if(abs(i.Y)>d){
                cnt=-1;
                break;
            }
            lx=i.X+sqrt(d*d-i.Y*i.Y);
            for(int j=ii-1;j>=0;--j){
                if(nc[j]){
                    if(dist(lx,0,pt[j].X,pt[j].Y)<=d){
                        nc[j]=0;
                        --cnt;
                    }
                }
                if(lx-pt[j].X>d)break;
            }
        }
    }
    cout<<cnt<<endl;
}
Example #4
0
File: B.cpp Project: Igorjan94/CF
ll automaton(string& s)
{
    ll j = s.size();
    for (int curstate = 0, i = 0, c = s[0] - 'a', f = 1; i < s.size(); curstate = states[curstate][c], c = s[++i] - 'a')
        if (states[curstate][c] == 0)
            f ? f = 0, j = i + 1 : f = 0,
            states[curstate][c] = states.size(),
            states.eb(empty);
    return j;
}
int main(){
    scanf("%d %d %d", &n, &q, &m);
    
    forn(i, n) scanf("%d", v+i);

    forn(i, q){
        int a, b, c;
        scanf("%d %d %d", &a, &b, &c);
        t.eb(a, b, c);
    }
 int assign(int &l, int r) {
     changes.eb(l,l);
     return l = r;
 }