QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#294881 | #4829. Mark on a Graph | ucup-team1055# | 0 | 2ms | 3688kb | C++20 | 7.2kb | 2023-12-30 17:10:09 | 2023-12-30 17:10:09 |
answer
#line 2 "/Users/noya2/Desktop/Noya2_library/template/template.hpp"
using namespace std;
#include<bits/stdc++.h>
#line 1 "/Users/noya2/Desktop/Noya2_library/template/inout_old.hpp"
namespace noya2 {
template <typename T, typename U>
ostream &operator<<(ostream &os, const pair<T, U> &p){
os << p.first << " " << p.second;
return os;
}
template <typename T, typename U>
istream &operator>>(istream &is, pair<T, U> &p){
is >> p.first >> p.second;
return is;
}
template <typename T>
ostream &operator<<(ostream &os, const vector<T> &v){
int s = (int)v.size();
for (int i = 0; i < s; i++) os << (i ? " " : "") << v[i];
return os;
}
template <typename T>
istream &operator>>(istream &is, vector<T> &v){
for (auto &x : v) is >> x;
return is;
}
void in() {}
template <typename T, class... U>
void in(T &t, U &...u){
cin >> t;
in(u...);
}
void out() { cout << "\n"; }
template <typename T, class... U, char sep = ' '>
void out(const T &t, const U &...u){
cout << t;
if (sizeof...(u)) cout << sep;
out(u...);
}
template<typename T>
void out(const vector<vector<T>> &vv){
int s = (int)vv.size();
for (int i = 0; i < s; i++) out(vv[i]);
}
struct IoSetup {
IoSetup(){
cin.tie(nullptr);
ios::sync_with_stdio(false);
cout << fixed << setprecision(15);
cerr << fixed << setprecision(7);
}
} iosetup_noya2;
} // namespace noya2
#line 1 "/Users/noya2/Desktop/Noya2_library/template/const.hpp"
namespace noya2{
const int iinf = 1'000'000'007;
const long long linf = 2'000'000'000'000'000'000LL;
const long long mod998 = 998244353;
const long long mod107 = 1000000007;
const long double pi = 3.14159265358979323;
const vector<int> dx = {0,1,0,-1,1,1,-1,-1};
const vector<int> dy = {1,0,-1,0,1,-1,-1,1};
const string ALP = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
const string alp = "abcdefghijklmnopqrstuvwxyz";
const string NUM = "0123456789";
void yes(){ cout << "Yes\n"; }
void no(){ cout << "No\n"; }
void YES(){ cout << "YES\n"; }
void NO(){ cout << "NO\n"; }
void yn(bool t){ t ? yes() : no(); }
void YN(bool t){ t ? YES() : NO(); }
} // namespace noya2
#line 1 "/Users/noya2/Desktop/Noya2_library/template/utils.hpp"
namespace noya2{
unsigned long long inner_binary_gcd(unsigned long long a, unsigned long long b){
if (a == 0 || b == 0) return a + b;
int n = __builtin_ctzll(a); a >>= n;
int m = __builtin_ctzll(b); b >>= m;
while (a != b) {
int mm = __builtin_ctzll(a - b);
bool f = a > b;
unsigned long long c = f ? a : b;
b = f ? b : a;
a = (c - b) >> mm;
}
return a << min(n, m);
}
template<typename T> T gcd_fast(T a, T b){ return static_cast<T>(inner_binary_gcd(abs(a),abs(b))); }
long long sqrt_fast(long long n) {
if (n <= 0) return 0;
long long x = sqrt(n);
while ((x + 1) * (x + 1) <= n) x++;
while (x * x > n) x--;
return x;
}
template<typename T> T floor_div(const T n, const T d) {
assert(d != 0);
return n / d - static_cast<T>((n ^ d) < 0 && n % d != 0);
}
template<typename T> T ceil_div(const T n, const T d) {
assert(d != 0);
return n / d + static_cast<T>((n ^ d) >= 0 && n % d != 0);
}
template<typename T> void uniq(vector<T> &v){
sort(v.begin(),v.end());
v.erase(unique(v.begin(),v.end()),v.end());
}
template <typename T, typename U> inline bool chmin(T &x, U y) { return (y < x) ? (x = y, true) : false; }
template <typename T, typename U> inline bool chmax(T &x, U y) { return (x < y) ? (x = y, true) : false; }
template<typename T> inline bool range(T l, T x, T r){ return l <= x && x < r; }
} // namespace noya2
#line 8 "/Users/noya2/Desktop/Noya2_library/template/template.hpp"
#define rep(i,n) for (int i = 0; i < (int)(n); i++)
#define repp(i,m,n) for (int i = (m); i < (int)(n); i++)
#define reb(i,n) for (int i = (int)(n-1); i >= 0; i--)
#define all(v) (v).begin(),(v).end()
using ll = long long;
using ld = long double;
using uint = unsigned int;
using ull = unsigned long long;
using pii = pair<int,int>;
using pll = pair<ll,ll>;
using pil = pair<int,ll>;
using pli = pair<ll,int>;
namespace noya2{
/* ~ (. _________ . /) */
}
using namespace noya2;
#line 2 "c.cpp"
#line 2 "/Users/noya2/Desktop/Noya2_library/misc/rng.hpp"
#line 4 "/Users/noya2/Desktop/Noya2_library/misc/rng.hpp"
namespace noya2 {
// [0, 2^64 - 1)
ull rng() {
static ull _x = 88172645463325252UL;
return _x ^= _x << 7, _x ^= _x >> 9;
}
// [l, r]
ll rng(ll l, ll r) {
assert(l <= r);
return l + rng() % ull(r - l + 1);
}
// [l, r)
ll randint(ll l, ll r) {
assert(l < r);
return l + rng() % ull(r - l);
}
// [0.0, 1.0)
ld rnd() { return rng() * 5.42101086242752217004e-20; }
// [l, r)
ld rnd(ld l, ld r) {
assert(l < r);
return l + rnd() * (r - l);
}
} // namespace noya2
#line 4 "c.cpp"
ll tot = 0, cnt = 0;
map<int,ll> mp;
void jikken(){
int n = 1000;
int m = 5000;
set<pii> st;
vector<int> deg(n,0);
rep(tt,m){
while (true){
int u = randint(0,n);
int v = randint(0,n);
if (u > v) swap(u,v);
if (u == v) continue;
if (st.contains(pii(u,v))) continue;
st.insert(pii(u,v));
deg[u]++;
deg[v]++;
break;
}
}
int mi = iinf, ma = -1;
rep(i,n){
chmin(mi,deg[i]);
chmax(ma,deg[i]);
}
tot += ma;
cnt += 1;
mp[ma]++;
}
void solve(){
// jikken(); return ;
int n, m; in(n,m);
vector<int> deg(n,0);
set<pii> st;
auto exist = [&](int u, int v){
if (u > v) swap(u,v);
return st.contains(pii(u,v));
};
auto add_edge = [&](int u, int v){
if (u > v) swap(u,v);
st.insert(pii(u,v));
};
rep(i,m){
int u, v; in(u,v); u--, v--;
add_edge(u,v);
deg[u]++;
deg[v]++;
}
vector<int> ids(n); iota(all(ids),0);
sort(all(ids),[&](int l, int r){
return deg[l] > deg[r];
});
if (deg[ids[0]] != deg[ids[1]] && deg[ids[1]] != deg[ids[2]] && deg[ids[2]] != deg[ids[3]]){
if (exist(ids[0],ids[1]) && exist(ids[0],ids[2])){
out("ok");
return ;
}
}
vector<pii> add;
if (!exist(ids[0],ids[1])){
add.emplace_back(ids[0],ids[1]);
add_edge(ids[0],ids[1]);
deg[ids[0]]++;
deg[ids[1]]++;
}
if (!exist(ids[0],ids[2])){
add.emplace_back(ids[0],ids[2]);
add_edge(ids[0],ids[2]);
deg[ids[0]]++;
deg[ids[2]]++;
}
if (deg[ids[1]] == deg[ids[2]]){
add.emplace_back(ids[0],ids[n-1]);
add.emplace_back(ids[1],ids[n-2]);
deg[ids[0]]++;
deg[ids[1]]++;
}
if (deg[ids[0]] == deg[ids[1]]){
add.emplace_back(ids[0],ids[n-3]);
deg[ids[0]]++;
}
out("mark");
out(add.size());
for (auto [u, v] : add){
out(u+1,v+1);
}
}
int main(){
int t = 1; // in(t);
while (t--) { solve(); }
// out(tot,cnt);
// out(ld(tot)/ld(cnt));
// for (auto [ma, c] : mp) out(ma,c);
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3624kb
input:
1000 3560 603 151 415 20 102 569 895 552 678 734 24 614 689 518 440 223 751 919 223 433 711 551 502 634 706 583 812 501 514 535 780 751 720 530 532 384 888 139 864 791 292 675 171 881 30 592 464 557 280 299 654 650 894 335 250 532 792 10 83 969 118 771 579 300 852 983 243 940 957 939 817 889 911 319...
output:
mark 2 733 310 733 252
input:
1000 3562 950 554 396 217 466 376 330 865 163 684 50 833 648 137 781 1000 184 95 844 383 831 175 48 355 279 904 167 379 278 494 582 250 506 567 209 500 64 422 253 49 663 368 964 882 292 403 831 643 999 851 125 553 102 506 827 437 726 125 932 719 641 339 721 655 102 790 267 793 201 155 186 576 898 36...
output:
ok
result:
ok all right
Test #2:
score: 100
Accepted
time: 1ms
memory: 3620kb
input:
1000 2000 457 335 160 497 464 992 892 255 853 3 308 301 970 363 541 299 89 418 425 128 626 827 603 854 484 874 755 295 607 483 798 552 356 850 320 357 254 940 675 901 168 525 301 636 520 555 773 910 343 701 889 966 218 529 909 950 71 64 682 284 424 138 721 792 670 544 386 72 654 909 725 235 592 437 ...
output:
mark 2 747 761 747 727
input:
1000 2002 610 181 640 320 118 165 377 313 621 518 358 293 525 365 912 594 562 553 541 519 660 299 428 406 670 489 127 722 130 848 332 232 333 220 537 547 522 665 610 982 842 663 236 995 318 614 193 126 257 999 906 319 276 553 532 563 3 629 982 741 685 786 411 279 165 960 167 507 489 385 605 104 965 ...
output:
ok
result:
ok all right
Test #3:
score: 100
Accepted
time: 2ms
memory: 3688kb
input:
1000 5000 449 632 597 26 701 322 249 190 411 770 666 596 989 995 112 861 445 818 544 659 24 680 739 593 344 439 193 932 600 526 574 869 216 918 716 793 259 686 555 993 255 578 659 271 328 524 729 672 39 771 241 866 27 790 417 109 56 403 338 299 387 232 280 306 589 794 833 419 900 802 54 697 539 807 ...
output:
mark 4 869 539 869 566 869 673 539 98
input:
1000 5004 258 506 398 737 458 36 208 588 601 845 791 170 361 150 350 177 619 34 977 914 578 699 634 106 213 739 601 442 387 464 647 928 128 762 345 860 821 596 976 190 178 835 60 376 933 471 116 632 467 792 769 215 464 286 956 152 726 21 57 143 612 419 42 123 693 34 217 870 722 697 256 532 649 530 2...
output:
ok
result:
ok all right
Test #4:
score: 100
Accepted
time: 1ms
memory: 3672kb
input:
1000 3156 347 398 792 278 754 442 413 757 391 130 636 625 207 437 81 415 47 974 887 779 524 619 379 894 868 594 653 919 29 117 123 867 632 505 648 147 130 420 495 876 637 659 882 348 462 878 282 646 398 525 419 224 926 448 305 934 855 570 396 345 774 918 336 123 502 491 984 783 845 142 790 594 754 4...
output:
mark 2 115 418 115 222
input:
1000 3158 540 943 439 852 904 654 845 585 154 753 297 533 215 276 159 469 266 325 123 439 16 909 157 346 810 843 150 509 394 426 811 611 876 355 492 105 437 788 885 38 865 396 20 309 397 703 287 297 253 812 456 465 157 28 766 878 918 911 74 668 310 817 609 811 394 334 639 127 836 887 748 615 161 741...
output:
ok
result:
ok all right
Test #5:
score: 0
Wrong Answer
time: 1ms
memory: 3620kb
input:
1000 3433 634 21 789 966 541 959 213 381 366 781 107 649 747 122 336 869 222 648 833 972 929 524 712 524 744 525 568 679 634 163 901 501 56 518 128 587 720 117 208 439 860 85 852 168 934 947 34 858 520 568 408 464 232 432 999 504 71 982 957 372 570 436 281 309 410 405 521 275 554 589 4 707 498 148 5...
output:
mark 1 797 631
input:
1000 3434 901 246 724 301 416 864 342 660 387 898 735 811 356 790 390 457 783 903 899 769 437 114 257 179 750 607 514 238 669 573 109 13 905 300 341 848 446 656 992 861 957 638 776 682 505 114 117 713 892 978 669 188 683 655 5 358 753 318 157 802 671 425 441 167 30 188 844 42 82 762 513 661 6 97 465...
output:
mark 0
result:
wrong answer Token "mark" doesn't correspond to pattern "ok"