QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#294833 | #4829. Mark on a Graph | ucup-team1055# | 0 | 1ms | 3788kb | C++20 | 6.8kb | 2023-12-30 16:53:22 | 2023-12-30 16:53:23 |
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);
}
詳細信息
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"