QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#294833#4829. Mark on a Graphucup-team1055#0 1ms3788kbC++206.8kb2023-12-30 16:53:222023-12-30 16:53:23

Judging History

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

  • [2023-12-30 16:53:23]
  • 评测
  • 测评结果:0
  • 用时:1ms
  • 内存:3788kb
  • [2023-12-30 16:53: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;
    rep(i,m){
        int u, v; in(u,v); u--, v--;
        if (u > v) swap(u,v);
        st.insert(pii(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]]){
        int u = ids[0];
        int v = ids[1];
        if (u > v) swap(u,v);
        if (st.contains(pii(u,v))){
            out("ok");
            return ;
        }
    }
    vector<pii> add;
    if (deg[ids[1]] == deg[ids[2]]){
        add.emplace_back(ids[0],ids[n-1]);
        add.emplace_back(ids[1],ids[n-2]);
    }
    if (deg[ids[0]] == deg[ids[1]]){
        add.emplace_back(ids[0],ids[n-3]);
    }
    {
        int u = ids[0];
        int v = ids[1];
        if (u > v) swap(u,v);
        if (!st.contains(pii(u,v))){
            st.insert(pii(u,v));
        }
    }
    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: 0
Wrong Answer
time: 1ms
memory: 3788kb

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
1
733 762

input:

1000 3561
269 626
295 222
665 959
909 534
682 161
833 706
155 199
841 656
184 286
383 358
259 86
771 817
37 355
174 167
484 763
209 250
693 401
850 500
902 369
521 380
368 418
676 977
920 112
831 175
688 730
692 125
654 102
757 70
962 736
87 733
373 956
600 137
201 783
267 511
790 201
975 583
937 55...

output:

mark
0

result:

wrong answer Token "mark" doesn't correspond to pattern "ok"