Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
26707 gaochunzhen 【BJ】T3 C++ 运行出错 52 2009 MS 416 KB 1599 2024-02-23 14:45:50

Tests(94/180):


#include <bits/stdc++.h> using namespace std; typedef long long LL; const int N = 109; int n, m, deg[N], g[N][N], T1[N][N], T2[N][N]; int getfa(int u) { for (int i = 1; i <= n; i++) if (T1[u][i]) return i; return 0; } int lim, ok, cnt; void del(int u, int v) { if (T1[u][v] && T2[u][v]) cnt--; T1[u][v] = T1[v][u] = 0; deg[u]--, deg[v]--; } void add(int u, int v) { if (!T1[u][v] && T2[u][v]) cnt++; T1[u][v] = T1[v][u] = 1; deg[u]++, deg[v]++; } pair<int, int> way[1000009]; void dfs(int d) { if (ok) return; if (cnt == n - 1) { printf("Yes\n%d\n", d); for (int i = 1; i <= d; i++) printf("%d %d\n", way[i].first, way[i].second); ok = 1; return; } if (d == lim) return; for (int u = 1; u <= n; u++) { if (deg[u] > 1) continue; int fa = getfa(u); for (int v = 1; v <= n; v++) { if (!g[u][v] || T1[u][v]) continue; del(fa, u), add(u, v), way[d + 1] = make_pair(u, v); dfs(d + 1); add(fa, u), del(u, v); } } } int main() { scanf("%d%d", &n, &m); for (int i = 1; i <= m; i++) { int u, v, f1, f2; scanf("%d%d%d%d", &u, &v, &f1, &f2); g[u][v] = g[v][u] = 1; if (f1) T1[u][v] = T1[v][u] = 1, deg[u]++, deg[v]++; if (f2) T2[u][v] = T2[v][u] = 1; if (f1 && f2) cnt++; } assert(n <= 9); while (!ok) { dfs(0); lim++; } if (!ok) printf("No\n"); fclose(stdin); fclose(stdout); return 0; }


测评信息: