QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#153956#5522. F*** 3-Colorable GraphsfryanWA 3ms4400kbC++203.4kb2023-08-31 11:44:142023-08-31 11:44:14

Judging History

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

  • [2023-08-31 11:44:14]
  • 评测
  • 测评结果:WA
  • 用时:3ms
  • 内存:4400kb
  • [2023-08-31 11:44:14]
  • 提交

answer

// Problem: AD - W7P1: F*** 3-Colorable Graphs
// Contest: Virtual Judge - 602 - Season 2023 - HW Series 1
// URL: https://vjudge.net/contest/570461#problem/AD
// Memory Limit: 253 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)


#include <algorithm>
#include <array>
#include <bitset>
#include <cassert>
#include <cctype>
#include <cfenv>
#include <cfloat>
#include <chrono>
#include <cinttypes>
#include <climits>
#include <cmath>
#include <complex>
#include <cstdarg>
#include <cstddef>
#include <cstdint>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <deque>
#include <fstream>
#include <functional>
#include <immintrin.h>
#include <initializer_list>
#include <iomanip>
#include <ios>
#include <iostream>
#include <istream>
#include <iterator>
#include <limits>
#include <list>
#include <map>
#include <memory>
#include <new>
#include <numeric>
#include <ostream>
#include <queue>
#include <random>
#include <set>
#include <sstream>
#include <stack>
#include <streambuf>
#include <string>
#include <tuple>
#include <type_traits>
#include <variant>
using namespace std;

//numbers
using ll=long long;
#define int ll
using ld=long double;
//pairs
#define P pair
#define pi P<int,int>
#define ff first
#define ss second
#define mp make_pair
//std data structure
#define all(x) begin(x), end(x)
#define sz(x) (int) (x).size()
//vectors
#define V vector
#define vi V<int>
#define v2i V<vi>
#define v3i V<v2i>
#define vpi V<pi>
#define vsi V<si>
#define pb push_back
//sets
#define S set
#define MS multiset
#define US unordered_set
#define si S<int>
#define msi MS<int>
#define usi US<int>
#define ins insert
#define era erase
//maps
#define M map
#define UM unordered_map
#define mii M<int,int>
#define mivi UM<int,vi>
#define misi UM<int,si>
#define umii UM<int,int>
#define umivi UM<int,vi>
#define umisi UM<int,si>
//queues
#define Q queue
#define PQ priority_queue
#define qi Q<int>
#define qpi Q<pi>
#define pqi PQ<int>
#define rpqi PQ<int,vi,greater<int> >
#define pqpi PQ<pi>
#define rpqpi PQ<pi,vpi,greater<pi> >
//constants
const int MOD=998244353;
const int INF=922337203685477580;
//nt functions
int binpow(int a, int b, int m=MOD) {
    a%=m; int res=1;
    while (b>0) {
        if (b&1) res=res*a%m;
        a=a*a%m;
        b>>=1;
    }
    return res;
}
int gcd (int a, int b) {
    return b?gcd (b,a%b):a;
}
int lcm (int a, int b) {
    return a/gcd(a,b)*b;
}
int inv(int i, int m=MOD) {
	return binpow(i, m-2, m);
}
//new header wip

int n,m;
vi deg;
v2i adj;
vi g1;
V<bool> vis;

void dfs0(int p, int g) {
	if (vis[p]) return;
	vis[p]=1;
	if (g) g1.pb(p);
	for (auto i:adj[p]) {
		dfs0(i,(g+1)%2);
	}
}

signed main() {
	ios::sync_with_stdio(false); cin.tie(nullptr);
	cin>>n>>m; n*=2; adj=v2i(n); deg=vi(n,0);
	while (m--) {
		int u,v; cin>>u>>v; u--; v--;
		deg[u]++; deg[v]++;
		adj[u].pb(v); adj[v].pb(u);
	}
	
	for (auto i:deg) {
		if (i>=3) {
			cout<<2; return 0;
		}
	}
	
	for (int i=0; i<n; i++) {
		sort(all(adj[i]));
	}
	
//each node connected to at most 2 vertices
	//create groups
	vis=V<bool>(n,0);	
	dfs0(0,0);
	
	for (auto i:g1) {
		for (auto j:g1) {
			if (i==j) continue;
			if (min(sz(adj[i]),sz(adj[j]))<2) continue;
			if (adj[i][0]==adj[j][0] && adj[i][1]==adj[j][1]) {
				cout<<2; return 0;
			}
		}
	}
	cout<<3;
	return 0;
}

详细

Test #1:

score: 100
Accepted
time: 2ms
memory: 3548kb

input:

2 4
1 3
1 4
2 3
2 4

output:

2

result:

ok 1 number(s): "2"

Test #2:

score: 0
Accepted
time: 2ms
memory: 3632kb

input:

3 5
1 4
2 4
2 5
3 5
3 6

output:

3

result:

ok 1 number(s): "3"

Test #3:

score: -100
Wrong Answer
time: 3ms
memory: 4400kb

input:

10000 20000
4570 11730
8803 16440
4257 15381
4455 17636
5256 13543
2172 18421
7735 17847
8537 16010
6175 12263
1079 13410
335 15901
3272 16233
7435 11454
4469 13374
1564 13416
1264 13446
7484 14510
8193 12267
628 15585
1388 11398
5444 19958
2059 18140
8947 13188
6214 17707
7940 12253
6726 11508
1839...

output:

2

result:

wrong answer 1st numbers differ - expected: '3', found: '2'