UVA - 10054 The Necklace

    xiaoxiao2025-02-15  17

    题目大意:每个节点有两个颜色,连接时颜色要相同,问能否串成项链。

    解题思路:判断欧拉回路。

    无向连通图G是欧拉图,当且仅当G不含奇数度结点(G的所有结点度数为偶数)。

    记录一下度数,判断全偶然后输出就行。euler 这个输出的时候要逆序注意一下。

    #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> using namespace std; int G[100][100]; int d[100]; int N; void euler(int now) { for (int i = 1; i < 51; i++) if (G[now][i]) { G[now][i]--; G[i][now]--; euler(i); printf("%d %d\n", i, now); } } int main() { int T; scanf("%d", &T); for (int t = 0; t < T; t++) { memset(G, 0, sizeof(G)); memset(d, 0, sizeof(d)); int a, b; scanf("%d", &N); for (int i = 0; i < N; i++) { scanf("%d%d", &a, &b); d[a]++; d[b]++; G[a][b]++; G[b][a]++; } if (t) printf("\n"); printf("Case #%d\n", t+1); int i; for (i = 1; i < 51; i++) if (d[i] % 2) break; if (i != 51) printf("some beads may be lost\n"); else euler(a); } return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-1296467.html
    最新回复(0)