QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#153966 | #5522. F*** 3-Colorable Graphs | fryan | WA | 5ms | 4336kb | C++20 | 3.5kb | 2023-08-31 11:58:45 | 2023-08-31 11:58:45 |
Judging History
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;
}
}
if (n>6) {
assert(false);
}
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;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3584kb
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: 1ms
memory: 3572kb
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: 5ms
memory: 4336kb
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'