QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#303899#7107. Chaleurkevinshan#RE 1ms5912kbC++174.1kb2024-01-13 05:27:552024-01-13 05:27:56

Judging History

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

  • [2024-01-13 05:27:56]
  • 评测
  • 测评结果:RE
  • 用时:1ms
  • 内存:5912kb
  • [2024-01-13 05:27:55]
  • 提交

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...

output:


result: