QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#201986#5160. Kebab PizzaDreamOnWA 1ms5924kbC++231.7kb2023-10-05 18:05:392023-10-05 18:05:40

Judging History

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

  • [2023-10-05 18:05:40]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:5924kb
  • [2023-10-05 18:05:39]
  • 提交

answer

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <map>

#define Maxn 100005

using namespace std;

int n, m, deg[Maxn];
map <pair<int, int>, bool> app;

struct Edge {
    int next, to;
}
edge[Maxn * 2];
int head[Maxn], edge_num;

void add_edge(int from, int to) {
    edge[++edge_num].next = head[from];
    edge[edge_num].to = to;
    head[from] = edge_num;
}

bool vis[Maxn]; int maxdeg, mindeg;
void dfs(int u) {
    vis[u] = 1;
    maxdeg = max(maxdeg, deg[u]);
    mindeg = min(mindeg, deg[u]);
    for(int i = head[u]; i; i = edge[i].next) {
        int v = edge[i].to;
        if(vis[v]) continue;
        dfs(v);
    }
}

int main() {
    scanf("%d%d", &m, &n);
    int u, v;
    for(int i = 1; i <= m; ++i) {
        scanf("%d%d", &u, &v);
        if(u > v) swap(u, v);
        if(u == v || app.find(make_pair(u, v)) != app.end()) continue;
        add_edge(u, v); add_edge(v, u);
        ++deg[u]; ++deg[v];
        app[make_pair(u, v)] = 1;
    }
    for(int i = 1; i <= n; ++i) {
        if(deg[i] == 1) vis[i] = 1;
    }
    for(int i = 1; i <= n; ++i) if(vis[i]) --deg[i], --deg[edge[head[i]].to];
    int cnt1 = 0, cnt2 = 0, cnt3 = 0;
    for(int i = 1; i <= n; ++i) {
        maxdeg = 0; mindeg = n + 1;
        if(vis[i]) continue;
        dfs(i);
        if(maxdeg == 2 && mindeg == 2) ++cnt2;
        else if(maxdeg == 2 && mindeg == 1) ++cnt1;
        else if(maxdeg <= 1 && mindeg <= 1) ++cnt1;
        else ++cnt3;
    }
    // cout << cnt1 << " " << cnt2 << " " << cnt3 << endl;
    if(cnt3 || (cnt2 > 1) || (cnt2 && cnt1)) cout << "impossible" << endl;
    else cout << "possible" << endl;
    return 0;
}

详细

Test #1:

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

input:

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

output:

possible

result:

ok single line: 'possible'

Test #2:

score: 0
Accepted
time: 0ms
memory: 3820kb

input:

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

output:

possible

result:

ok single line: 'possible'

Test #3:

score: 0
Accepted
time: 0ms
memory: 3740kb

input:

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

output:

impossible

result:

ok single line: 'impossible'

Test #4:

score: 0
Accepted
time: 0ms
memory: 5900kb

input:

8 4
1 1
1 2
2 1
2 2
3 3
3 4
4 3
4 4

output:

possible

result:

ok single line: 'possible'

Test #5:

score: 0
Accepted
time: 0ms
memory: 3820kb

input:

4 4
1 2
2 1
3 4
4 3

output:

possible

result:

ok single line: 'possible'

Test #6:

score: 0
Accepted
time: 1ms
memory: 5924kb

input:

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

output:

possible

result:

ok single line: 'possible'

Test #7:

score: -100
Wrong Answer
time: 0ms
memory: 3864kb

input:

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

output:

possible

result:

wrong answer 1st lines differ - expected: 'impossible', found: 'possible'