QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#294903#4829. Mark on a Graphucup-team1055#0 2ms3992kbC++207.2kb2023-12-30 17:18:222023-12-30 17:18:23

Judging History

你现在查看的是最新测评结果

  • [2023-12-30 17:18:23]
  • 评测
  • 测评结果:0
  • 用时:2ms
  • 内存:3992kb
  • [2023-12-30 17:18:22]
  • 提交

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));
        deg[u]++;
        deg[v]++;
    };
    rep(i,m){
        int u, v; in(u,v); u--, v--;
        add_edge(u,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;
    auto random_add = [&](int v){
        reb(i,n){
            if (exist(v,ids[i])) continue;
            add.emplace_back(v,ids[i]);
            add_edge(v,ids[i]);
            return ;
        }
    };
    if (!exist(ids[0],ids[1])){
        add.emplace_back(ids[0],ids[1]);
        add_edge(ids[0],ids[1]);
    }
    if (!exist(ids[0],ids[2])){
        add.emplace_back(ids[0],ids[2]);
        add_edge(ids[0],ids[2]);
    }
    if (deg[ids[1]] == deg[ids[2]]){
        random_add(ids[0]);
        random_add(ids[1]);
    }
    if (deg[ids[0]] == deg[ids[1]]){
        random_add(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);
}

详细

Test #1:

score: 100
Accepted
time: 1ms
memory: 3924kb

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: 3696kb

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: 3992kb

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 673

input:

1000 5004
258 506
817 737
458 45
208 588
601 845
791 170
361 150
350 177
473 34
977 914
578 699
634 106
213 407
601 442
387 464
647 928
128 762
345 860
821 596
976 605
178 835
60 376
933 471
116 632
467 792
769 215
464 286
956 152
726 21
744 533
612 419
42 123
693 34
915 870
722 697
256 532
649 530
...

output:

ok

result:

ok all right

Test #4:

score: 100
Accepted
time: 1ms
memory: 3760kb

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: 3748kb

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"