求助,RE,没有输出

P2731 [USACO3.3] 骑马修栅栏 Riding the Fences

Yoo_ @ 2019-01-22 21:55:05

我的代码

#include <cstdio>
#include <iostream>
using namespace std;
const int N=5005;
const int M=5005;
int g[N][N],head[N],Next[M],to[M],cnt=1,S=N,m,in[N];
void add(int u,int v)
{
    Next[++cnt]=head[u];
    to[cnt]=v;
    head[u]=cnt;
}
int s[M],tot,vis[M];
void dfs(int now)
{
    for(int i=head[now];i;i=Next[i])
    {
        if(!vis[i])
        {
            vis[i]=1;
            vis[i^1]=1;
            head[now]=Next[i];
            dfs(to[i]);
        }
    }
    s[++tot]=now;
}
int main()
{
    scanf("%d",&m);
    int u,v;
    for(int i=1;i<=m;i++)
    {
        scanf("%d%d",&u,&v);
        if(u>v){
            swap(u,v);
        }
        g[u][v]++;
        in[v]++,in[u]++;
        S=S<u?S:u;
    }
    int maxA=500,maxB=500;
    while(maxA--){
        if(in[maxA]&1){
            S=maxA;
        }
    }
    maxA=500;
    while(maxA--){
        while(maxB--)
        {
            while(g[maxA][maxB]--)
                add(maxA,maxB),add(maxB,maxA);
        }
    }
    dfs(S);
    while(tot--){
        printf("%d\n",s[tot]);
    }
    return 0;
}

by Yoo_ @ 2019-01-22 21:55:19

求助大佬


by 一飞冲天666 @ 2019-01-22 22:08:16

@我的智商贼低 哈哈哈


by 施一公 @ 2019-03-09 11:39:59

@我的智商贼低

#include<bits/stdc++.h>
using namespace std;
int G[101][101];
int du[101]
int n,m,tot;
int ans[510];
void dfs(int x){
    for(int i=1;i<=m;i++){
        if(G[x][i]>0){
            G[x][i]--
            G[i][x]--;
            dfs(i);
        }
    }
    ans[++tot]=x;
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        int x,y;
        cin>>x>>y;
        G[x][y]++
        G[y][x]++;
        du[x]++
        du[y]++;
        m=max(max(x,m),y);
    }
    int p=1,cnt=0,flag=1;
    for(int i=1;i<=m;i++){
        if(du[i]%2==1){
            cnt++
            if(flag){
                p=i;
                flag=0
            }
            p=i;
            break;
        }
    }
//  if(cnt>2){
//      cout<<"no"
//      return;
//  }   
    dfs(p);
    for(int i=tot;i>1;i--){
        cout<<ans[i]<<endl;
    }
    return 0;
}

希望更丰富的展现?使用Markdown


by 施一公 @ 2019-03-09 11:43:58

@我的智商贼低 有坑勿喷,自己编译运行一下就好了


by Yoo_ @ 2019-03-09 11:44:20

@施一公 ...


by 施一公 @ 2019-03-09 11:50:05

希望更丰富的展现?使用Markdown


|