// from 2 # include using namespace std; const int MAXN = 5005; const clock_t begin_time = clock(); const float Final_Time = 4.7; mt19937 rand_Gen(4412552758); int n,m,l,k; vector > g[MAXN]; int dist[MAXN][MAXN]; double cost[MAXN][MAXN]; // cust[u][p] - cena za u, ako kushtata e p; priority_queue > q; struct prob { int u,v; double c; }; vector p; double sums[MAXN]; priority_queue > best[MAXN]; vector K; int house[MAXN]; double ANS; bool gett[MAXN]; int rnd[MAXN]; double sim[MAXN][MAXN], wg[MAXN]; bool have_time() { return ( (float( clock () - begin_time ) / CLOCKS_PER_SEC) cost[i][l]) { house[i] = l; } } } } void construct_houses() { int i,j; for(i = 1; i <= n; i++) { for(j = 1; j <= n; j++) { sums[i]+=cost[j][i]; } q.push({-sums[i],i}); } for(i = 1; i<=k; i++) { K.push_back(q.top().second); q.pop(); } find_houses(); } queue > > restoreit; void check_for_better(int t) { int i,j; if(K.size()>n>>m>>l>>k; int i,j; int u,v,c; for(i = 1; i<=m; i++) { cin>>u>>v>>c; g[u].push_back({v,c}); g[v].push_back({u,c}); } prob W; for(i = 1; i <= l; i++) { cin>>W.u>>W.v>>W.c; p.push_back(W); } for(i = 1;i<=n;i++)wg[i] = 1.0; simulate_weights(); for(i = 1; i<=n;i++) { rnd[i] = i; } /* for(i = 1; i <=n;i++) { swap(rnd[i],rnd[rand_Gen()%n+1]); }*/ for(int T = 1;have_time() && T <= n; T++) { i = rnd[T]; // cout<