[CF1076D] Edge Supresión - Dijkstra, más corto árbol de ruta

Comunicar a un gráfico no ponderado dado, la retención de a lo sumo \ (K \) bordes, para maximizar la \ (1 \) Número de nodos más corto número de puntos de longitud constante.

Solución

Un enfoque obvio es construir el más corto original de árbol de rutas, seleccionando al azar una de tamaño \ (K \) comprende la comunicación del bloque de raíz es la respuesta

Por otro lado, volvemos al principio del algoritmo de Dijkstra no es difícil de encontrar, sólo tenemos que añadir el algoritmo \ (k \) después de que los lados para detener el conjunto seleccionado de bordes es la respuesta

#include <bits/stdc++.h>
using namespace std;
#define reset3f(x) memset(x,0x3f,sizeof x)
#define int long long
const int N = 1000005;

int n,m,k,t1,t2,t3;
struct pii {
    int first,second,third;
};
map<int,int> mp;
namespace sp {
const int N=1e+6+5;
vector<pii> g[N];
int n,v0=1,d[N],pre[N];
void make(int t1,int t2,int t3,int t4) {
    g[t1].push_back({t2,t3,t4});
    g[t2].push_back({t1,t3,t4});
}
void reset_graph() {
    for(int i=0;i<=n;i++) g[i].clear();
}
void solve() {
    priority_queue<pair<int,int> > qu;
    reset3f(d);
    d[v0]=0;
    qu.push(make_pair(0,v0));
    while(qu.size()) {
        int p=qu.top().second,r=qu.top().first;
        qu.pop();
        if(r+d[p]) continue;
        if(pre[p]) mp[pre[p]]++;
        if(mp.size()>=k) {
            for(auto i=mp.begin();i!=mp.end();i++)
                cout<<i->first<<" ";
            exit(0);
        }
        for(int i=0;i<g[p].size();i++) {
            int q=g[p][i].first,w=g[p][i].second;
            if(d[q]>d[p]+w) {
                d[q]=d[p]+w;
                qu.push(make_pair(-d[q],q));
                pre[q]=g[p][i].third;
            }
        }
    }
}
}

signed main() {
    ios::sync_with_stdio(false);
    cin>>n>>m>>k;
    k=min(k,n-1);
    cout<<k<<endl;
    for(int i=1;i<=m;i++) {
        cin>>t1>>t2>>t3;
        sp::make(t1,t2,t3,i);
    }
    sp::solve();
}

Supongo que te gusta

Origin www.cnblogs.com/mollnn/p/12584191.html
Recomendado
Clasificación