QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#505242#5745. Graph IsomorphismchimeraTL 557ms3808kbC++141.5kb2024-08-04 23:20:242024-08-04 23:20:25

Judging History

This is the latest submission verdict.

  • [2024-08-04 23:20:25]
  • Judged
  • Verdict: TL
  • Time: 557ms
  • Memory: 3808kb
  • [2024-08-04 23:20:24]
  • Submitted

answer

#include <bits/stdc++.h>
using namespace std;
#define ll long long

int main() {
    ll T; cin >> T;
    for(ll t = 0; t < T; t++) {
        ll N, M; cin >> N >> M;

        vector<vector<ll>> adj(N);
        for(ll i = 0; i < M; i++) {
            ll U,V; cin >> U >> V; U--;V--;
            adj[U].push_back(V); adj[V].push_back(U);
        }

        if(N <= 3) {
            cout << "YES\n"; continue;
        }

        // complete graph: always fail.
        if(M == (N*(N+1))/2 || M == 0) {
            cout << "YES\n"; continue;
        }

        // if there is a vertex with degree in the range [2..N-2], now always possible; (N-1 choose 2) > N

        if(N > 6) {
            // in big graphs even if all vertices are small, there are enough matchings.
            cout << "NO\n"; continue;
        }

        vector<vector<pair<ll,ll>>> results;

        vector<ll> permu;
        for(ll i = 0; i < N; i++) permu.push_back(i);

        do {
            vector<pair<ll,ll>> ed;
            for(ll i = 0; i < N; i++) {
            for(auto a: adj[i]) {
                ed.push_back({permu[i], permu[a]});
            }
            }

            sort(ed.begin(), ed.end());

            bool contained = false; for(auto r: results) if(r == ed) contained = true;

            if(!contained) results.push_back(ed);
        } while(next_permutation(permu.begin(), permu.end()));

        if(results.size() > N) cout << "NO\n";
        else cout << "YES\n";
        


        
    }
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3576kb

input:

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

output:

YES
YES
NO

result:

ok 3 token(s): yes count is 2, no count is 1

Test #2:

score: 0
Accepted
time: 35ms
memory: 3808kb

input:

39982
3 2
2 1
3 2
2 1
1 2
2 1
2 1
3 3
3 1
2 3
1 2
2 1
1 2
3 3
3 1
3 2
2 1
2 1
1 2
3 2
1 2
3 1
3 3
2 1
3 1
2 3
2 1
1 2
3 2
2 1
3 2
3 3
2 3
3 1
2 1
3 3
2 1
1 3
2 3
3 3
3 1
3 2
1 2
2 1
2 1
2 1
2 1
3 1
3 1
2 1
2 1
2 1
1 2
3 2
1 3
3 2
3 2
1 2
1 3
3 2
3 2
1 3
2 1
1 2
3 2
3 2
3 1
3 3
2 3
3 1
1 2
2 1
1 2
3 ...

output:

YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
...

result:

ok 39982 token(s): yes count is 39982, no count is 0

Test #3:

score: 0
Accepted
time: 111ms
memory: 3516kb

input:

33365
3 3
3 1
2 3
2 1
2 1
2 1
4 6
1 2
3 4
4 2
2 3
3 1
4 1
2 1
1 2
2 1
1 2
4 5
1 4
1 2
4 2
3 4
1 3
4 3
4 2
2 1
1 3
3 1
3 2
4 3
1 3
1 2
3 4
3 3
3 2
3 1
2 1
3 1
2 3
3 1
1 3
3 1
2 1
3 2
1 3
3 2
4 5
3 1
4 2
3 4
2 3
2 1
4 2
1 2
3 2
2 1
2 1
3 2
1 2
2 3
3 1
3 2
4 1
3 4
3 1
2 1
4 3
1 2
4 2
3 2
2 1
2 1
4 5
3 ...

output:

YES
YES
YES
YES
YES
NO
NO
YES
NO
YES
YES
YES
YES
YES
NO
NO
YES
YES
YES
NO
YES
YES
YES
NO
YES
YES
YES
YES
YES
YES
YES
YES
NO
NO
YES
YES
YES
YES
NO
NO
NO
YES
YES
YES
YES
YES
YES
YES
YES
NO
YES
YES
YES
YES
YES
YES
NO
YES
NO
YES
YES
YES
NO
YES
YES
NO
YES
NO
YES
NO
YES
YES
YES
YES
NO
YES
YES
YES
YES
YES
...

result:

ok 33365 token(s): yes count is 25608, no count is 7757

Test #4:

score: 0
Accepted
time: 557ms
memory: 3512kb

input:

28572
3 3
1 3
2 1
3 2
2 1
1 2
4 1
4 2
3 2
1 2
2 3
5 2
4 3
4 2
2 1
2 1
3 1
1 3
5 10
1 3
3 5
1 2
4 3
4 5
4 1
5 1
4 2
2 5
3 2
4 4
2 1
1 3
2 4
1 4
2 1
1 2
4 4
1 3
4 2
4 1
2 1
4 3
1 4
3 1
4 2
5 2
2 1
4 5
4 1
3 4
5 5
2 5
3 1
4 1
2 3
1 5
5 3
5 4
3 5
2 3
4 1
4 3
3 2
2 3
1 2
2 1
2 1
4 5
3 2
3 4
4 1
3 1
2 1
3...

output:

YES
YES
NO
YES
NO
YES
YES
YES
NO
YES
NO
NO
NO
NO
NO
NO
NO
YES
YES
NO
YES
NO
YES
YES
YES
NO
YES
YES
NO
YES
YES
YES
NO
YES
YES
NO
YES
YES
NO
NO
YES
NO
YES
NO
YES
YES
YES
YES
NO
YES
YES
YES
NO
NO
YES
YES
NO
YES
YES
NO
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
NO
YES
YES
YES
NO
NO
NO
YES
YES
Y...

result:

ok 28572 token(s): yes count is 19834, no count is 8738

Test #5:

score: -100
Time Limit Exceeded

input:

22864
5 8
4 1
2 3
5 2
1 2
1 5
5 3
4 2
5 4
4 5
4 3
2 1
4 2
1 4
3 1
4 5
3 2
1 4
1 2
4 2
3 1
5 5
2 5
1 2
5 4
5 3
1 5
5 4
1 5
4 5
2 5
3 5
6 1
6 1
3 3
3 2
2 1
3 1
6 10
4 2
5 4
3 2
6 2
5 6
5 2
6 3
4 6
3 4
3 5
3 2
1 3
1 2
2 1
2 1
3 1
1 2
3 3
2 1
3 2
3 1
6 3
4 5
2 3
6 3
4 3
2 4
2 1
3 4
5 1
2 3
4 2
4 2
3 1
6...

output:

NO
NO
NO
NO
YES
NO
YES
YES
YES
YES
YES
YES
NO
NO
NO
YES
YES
YES
YES
YES
YES
YES
YES
YES
NO
NO
YES
YES
NO
YES
NO
YES
YES
YES
YES
NO
YES
YES
YES
YES
YES
YES
NO
NO
YES
YES
NO
YES
NO
YES
YES
YES
NO
NO
NO
YES
YES
YES
YES
NO
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
YES
NO
NO
NO
YES
NO
NO
NO
YES...

result: