QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#303899 | #7107. Chaleur | kevinshan# | RE | 1ms | 5912kb | C++17 | 4.1kb | 2024-01-13 05:27:55 | 2024-01-13 05:27:56 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define all(x) x.begin(), x.end()
#define pb push_back
#define mp make_pair
#define ps push
#define in insert
#define f first
#define s second
#define nl cout<<"\n"
#define ca(v) for(auto i:v) cout<<i<<" ";
#define cbit(x) __builtin_popcount(x)
#define gcd(a, b) __gcd(a, b)
#define lcm(a, b) (a*b/gcd(a, b))
const int xm[4] = {-1, 1, 0, 0};
const int ym[4] = {0, 0, -1, 1};
const int MOD = 1e9 + 7;
const int MAXN = 5e5 + 5;
const ll POW = 9973;
const int MX = 1e5+5;
#define FOR(i,a,b) for(int i=a;i<b;i++)
#define For(i,a) FOR(i,0,a)
#define pi pair<int,int>
vector<int> adj[MX];
void solve() {
int n,m;cin>>n>>m;
For(i,n) {
adj[i].clear();
}
set<pi> edg;
For(i,m) {
int u,v;cin>>u>>v;u--;v--;
adj[u].pb(v);
adj[v].pb(u);
edg.insert({u,v});
edg.insert({v,u});
}
set<int> fsIn, ins, out;
For(i,n) {
ins.insert(i);
fsIn.insert(i);
}
For(i,n) {
if (adj[i].size() <= 1) {
ins.erase(i);
fsIn.erase(i);
out.insert(i);
}
}
set<int> toRem;
for(int x:fsIn) {
bool flag = false;
for(int y:ins) {
if (!edg.count({x,y}) && x!=y) {
// cout << x << " A " << y << endl;
flag = true;
}
}
if (flag) {
toRem.insert(x);
}
}
for(int x:toRem) {
// cout << "REM " << x << endl;
fsIn.erase(x);
}
int ZZ = -1;
for(int x:toRem) {
for(int y:adj[x]) {
if (out.count(y)) {
assert(ZZ==-1);
ZZ = x;
break;
}
}
}
if (ZZ != -1) {
cout << 1 << ' ';
} else {
if (m==0) {
cout << n << ' ';
} else {
if (fsIn.size() == 1 && ins.size()==1 ) {
cout << m << ' ';
} else if (fsIn.size() == ins.size()){
cout << 1 << ' ';
} else {
cout << ins.size() - fsIn.size() << ' ';
}
}
}
if (ZZ!=-1) {
fsIn.insert(ZZ);
}
int frees = 0;
for(int x:fsIn) {
bool flag = false;
for(int y:adj[x]) {
if (out.count(y)) {
flag = true;
}
}
if (!flag) {
frees++;
}
}
// cout << frees << " " << ins.size() << '\n';
if (fsIn.size() == 0) {
if (m==0) {
cout << 1 << '\n';
} else { // m==1
cout << 2 << '\n';
}
} else if(fsIn.size() == 1) {
cout << 1 << '\n';
} else {
int ways = 1;
for (int x:fsIn) {
int cnt = 0;
for (int y:adj[x]) {
if (out.count(y)) {
cnt++;
}
}
if (cnt == 1) {
ways ++;
}
}
cout << ways << '\n';
}
// if (ins.size() <= 1) {
// if (ins.size() == 0) {
// if (m==0) {
// cout << 1 << '\n';
// } else {
// cout << 2 << '\n';
// }
// } else {
// cout << 1 << '\n';
// }
// } else {
// if (frees == 0) {
// cout << ins.size()+1 << '\n';
// } else {
// cout << frees << '\n';
// }
// }
}
// if(ins.size()<=2){
// if (m==0) {
// cout << n << ' ';
// } else {
// cout << m << ' ';
// }
// } else {
// if (ZZ==-1) {
// } else {
// cout << 1 << ' ';
// }
// }
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0);
if (fopen("input.in", "r")) {
freopen("input.in", "r", stdin);
freopen("output.out", "w", stdout);
}
int t;cin>>t;
for(int i=0;i<t;i++) {
solve();
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 5912kb
input:
3 3 2 1 2 2 3 6 6 1 2 2 3 1 3 1 4 2 5 3 6 4 1 1 2
output:
2 1 1 4 1 2
result:
ok 3 lines
Test #2:
score: -100
Runtime Error
input:
2231 1 0 5 7 4 1 3 4 3 1 3 5 4 2 3 2 4 5 5 4 2 1 2 5 2 4 2 3 5 10 3 2 2 5 1 4 4 2 4 5 1 2 1 3 3 5 3 4 1 5 5 10 1 3 2 4 1 4 5 2 2 3 1 5 5 4 1 2 3 4 5 3 5 9 2 5 3 5 2 3 2 1 4 3 3 1 4 1 4 5 2 4 5 4 4 2 4 1 4 5 4 3 5 9 4 1 4 5 3 4 2 4 2 1 3 1 2 5 3 5 3 2 5 4 2 5 2 3 2 1 2 4 5 9 5 2 1 3 4 3 1 2 5 4 4 2 5...