我发现不用建那么多数组

Star 2021-12-23 21:10:10

#include <cstdio>
#include <vector>
using namespace std;
int mp[1010][1010];
int du[1010];
int n, m;
void dfs(int x) {
    for(int i = 1; i <= n; ++i){
        if(mp[x][i] == 1){
            mp[x][i] = 0;
            mp[i][x] = 0;
            dfs(i);
        }
    }
    printf("%d ", x);
}
int main() {
    int start = 1;
    scanf("%d%d", &n, &m);
    for(int i = 1; i <= m; ++i) {
        int t1, t2;
        scanf("%d%d", &t1, &t2);
        mp[t1][t2] = 1;
        mp[t2][t1] = 1;
        ++du[t1]; ++du[t2];
    }
    for(int i = 1; i <= n; ++i) {
        if(du[i] % 2 == 1){
            start = i;
        }
    }
    dfs(start);
    return 0;
}

共 1 条回复

Laffey

雀石