PAT A1126 测试点3错误

    技术2025-09-23  60

    判断是否是连通图,如果没有判断导致测试点3错误

    even degree 偶数度

    #include <iostream> #include <vector> using namespace std; const int MAXV = 510; vector<int> Adj[MAXV], ans; bool vis[MAXV]={false}; int cnt=0; void dfs(int index) { vis[index] = true; cnt++; for (int i = 0; i < Adj[index].size(); i++) if (!vis[Adj[index][i]]) dfs(Adj[index][i]); } int main() { int n, m; cin >> n >> m; for (int i = 0; i < m; ++i) { int u, v; cin >> u >> v; Adj[u].push_back(v); Adj[v].push_back(u); } int odd_num = 0; for (int i = 1; i <= n; ++i) { int SIZE = Adj[i].size(); if (SIZE % 2 != 0) { odd_num++; } ans.push_back(SIZE); } dfs(1); if(cnt!=n){ for (int i = 0; i < ans.size(); ++i) { printf("%d", ans[i]); if (i != ans.size() - 1) printf(" "); } printf("\n"); printf("Non-Eulerian\n"); return 0; } if (odd_num == 0 ) { for (int i = 0; i < ans.size(); ++i) { printf("%d", ans[i]); if (i != ans.size() - 1) printf(" "); } printf("\n"); printf("Eulerian\n"); } else if (odd_num == 2) { for (int i = 0; i < ans.size(); ++i) { printf("%d", ans[i]); if (i != ans.size() - 1) printf(" "); } printf("\n"); printf("Semi-Eulerian\n"); } else { for (int i = 0; i < ans.size(); ++i) { printf("%d", ans[i]); if (i != ans.size() - 1) printf(" "); } printf("\n"); printf("Non-Eulerian\n"); } return 0; }
    Processed: 0.013, SQL: 9