uva 10596 - Morning Walk (欧拉回路~~~)

这也是一道简单的拓扑排序题目,当然首先还是要理解题意的~

这是个无向图,连路径都不需要打印出来,想来还是灰常水的题目呀~

不过奈何人时有犯二,写出来之后自己感觉特么一定是对的呀!可是交上去runtime error 很多次,那个郁闷啊……

后来怒删重写!再叫果断AC。。

回头检查代码时发现错误的原因在于循环变量范围,自己给错了限定的变量,导致读取了非法内存。。

看来以后真如果runtime error 还检查不出来,可以考虑水一下——尽量把数组往大了开……

废话不说了,上代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>


int n,r;
int a,b;
int G[210][210];
int vis[210];
int count[210];

void init()
{
    a=0;b=0;
    memset(G,0,sizeof(G));
    memset(vis,0,sizeof(vis));
    memset(count,0,sizeof(count));
}

void dfs(int u)
{
    vis[u]=1;
    for(int v=0;v<n;v++) if(G[u][v]&&!vis[v])
    {
        dfs(v);
    }
}

int main()
{
    while(scanf("%d%d",&n,&r)!=EOF)
    {
        init();
        for(int i=0;i<r;i++)
        {
            scanf("%d%d",&a,&b);
            G[a][b]=G[b][a]=1;
            count[a]++;
            count[b]++;
        }
        int ok=0,cnt=0;
        for(int i=0;i<n;i++)
        {
            if(count[i]%2==1)
            {
                ok=1;
                break;
            }
        }

        if(ok||r<2)
            printf("Not Possible\n");
        else
        {
            dfs(0);
            for(int i=0;i<n;i++)
            {
                if(!vis[i])
                {
                    ok=1;
                    break;
                }
            }
            if(ok)
                printf("Not Possible\n");
            else
                printf("Possible\n");
        }
    }
    return 0;
}


你可能感兴趣的:(error,Runtime,DFS,uva,欧拉回路,dfs判连通)