QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#372074 | #2437. Wireless is the New Fiber | UFRJ# | AC ✓ | 288ms | 785824kb | C++20 | 2.1kb | 2024-03-30 21:00:58 | 2024-03-30 21:01:40 |
Judging History
answer
#include "bits/stdc++.h"
using namespace std;
using lint = int64_t;
int main(void) {
cin.tie(nullptr)->sync_with_stdio(false);
int n, m; cin>>n>>m;
vector<int> degree(n);
for(int e =0; e<m; e++){
int u,v;
cin>>u>>v;
degree[u]++;
degree[v]++;
}
//sum = 2*(n-1) - n = n-2
const int L = n-2;
vector<vector<int>> link(n+1, vector<int>(L+1, -1));
vector<vector<int>> dp(n+1, vector<int>(L+1, -2*n));
dp[0][0] = 0;
int maxi = 0;
for(int i =0; i <n; i++){
dp[i+1] = dp[i];
link[i+1] = link[i];
const int d = degree[i] - 1;
for(int tam = L; tam >= d; tam--){
if(dp[i+1][tam] < dp[i][tam-d] + 1){
dp[i+1][tam] = dp[i][tam-d] + 1;
link[i+1][tam] = i;
}
maxi = max(maxi, dp[i+1][tam]);
}
}
vector<int> new_degree(n, 1);
vector<bool> selected(n);
for(int k = 0; k <=n; k++) for(int i = 0; i <=L; i++) if(dp[k][i] == maxi){
int cur = i;
int l = link[k][i];
int answer = dp[k][i];
while(l != -1){
selected[l] = true;
new_degree[l] = degree[l];
cur = cur - (degree[l] - 1);
l = link[l][cur];
}
for(int j =0; j < n; j++){
if(!selected[j]){
selected[j] = true;
new_degree[j] += n-2-i;
break;
}
}
vector<int> ids(n);
iota(ids.begin(), ids.end(), 0);
sort(ids.begin(), ids.end(), [&](int a, int b){
return new_degree[a] > new_degree[b];
});
cout<<n-answer<<"\n";
cout<<n<<" "<<n-1<<"\n";
for(int l = 0, r = 1; l < n; l++){
const int a = ids[l];
while(new_degree[a]){
new_degree[a]--;
cout<<a<<" "<<ids[r]<<"\n";
new_degree[ids[r]]--;
r++;
}
}
exit(0);
}
return 0;
}
Details
Test #1:
score: 100
Accepted
time: 0ms
memory: 3600kb
Test #2:
score: 0
Accepted
time: 0ms
memory: 3788kb
Test #3:
score: 0
Accepted
time: 0ms
memory: 3592kb
Test #4:
score: 0
Accepted
time: 0ms
memory: 3552kb
Test #5:
score: 0
Accepted
time: 0ms
memory: 3640kb
Test #6:
score: 0
Accepted
time: 0ms
memory: 3616kb
Test #7:
score: 0
Accepted
time: 0ms
memory: 3840kb
Test #8:
score: 0
Accepted
time: 0ms
memory: 3708kb
Test #9:
score: 0
Accepted
time: 0ms
memory: 3672kb
Test #10:
score: 0
Accepted
time: 1ms
memory: 3676kb
Test #11:
score: 0
Accepted
time: 1ms
memory: 3684kb
Test #12:
score: 0
Accepted
time: 1ms
memory: 3660kb
Test #13:
score: 0
Accepted
time: 0ms
memory: 11536kb
Test #14:
score: 0
Accepted
time: 0ms
memory: 11452kb
Test #15:
score: 0
Accepted
time: 0ms
memory: 11524kb
Test #16:
score: 0
Accepted
time: 6ms
memory: 11536kb
Test #17:
score: 0
Accepted
time: 3ms
memory: 11476kb
Test #18:
score: 0
Accepted
time: 13ms
memory: 11556kb
Test #19:
score: 0
Accepted
time: 257ms
memory: 785824kb
Test #20:
score: 0
Accepted
time: 288ms
memory: 785728kb
Test #21:
score: 0
Accepted
time: 268ms
memory: 785540kb
Test #22:
score: 0
Accepted
time: 255ms
memory: 785240kb
Test #23:
score: 0
Accepted
time: 228ms
memory: 785112kb
Test #24:
score: 0
Accepted
time: 263ms
memory: 785024kb
Test #25:
score: 0
Accepted
time: 247ms
memory: 784672kb
Test #26:
score: 0
Accepted
time: 263ms
memory: 784604kb
Test #27:
score: 0
Accepted
time: 268ms
memory: 784580kb
Test #28:
score: 0
Accepted
time: 247ms
memory: 784424kb
Test #29:
score: 0
Accepted
time: 267ms
memory: 785812kb
Test #30:
score: 0
Accepted
time: 1ms
memory: 3528kb
Test #31:
score: 0
Accepted
time: 1ms
memory: 3576kb
Test #32:
score: 0
Accepted
time: 1ms
memory: 3532kb
Test #33:
score: 0
Accepted
time: 6ms
memory: 3844kb
Test #34:
score: 0
Accepted
time: 0ms
memory: 3632kb
Test #35:
score: 0
Accepted
time: 0ms
memory: 3592kb
Test #36:
score: 0
Accepted
time: 1ms
memory: 3612kb
Test #37:
score: 0
Accepted
time: 0ms
memory: 3548kb