给你一些边,假设存在欧拉路径就打出来

我的代码例如以下:

#include<iostream>
#include<cstring>
using namespace std;
int dot[110],vis[110],degree[110],num_side,num_dot,no,road[110][110],st;
struct node
{
int a,b;
}side[110],step[110];
void init()
{
int i;
num_dot=no=0;
memset(degree,0,sizeof(degree));
memset(vis,0,sizeof(vis));
memset(road,0,sizeof(road));
scanf("%d",&num_side);
for(i=0;i<num_side;i++)
{
scanf("%d%d",&side[i].a,&side[i].b);
degree[side[i].a]++,degree[side[i].b]++;
road[side[i].a][side[i].b]++,road[side[i].b][side[i].a]++;
if(!vis[side[i].a])
dot[num_dot++]=side[i].a,vis[side[i].a]=1;
if(!vis[side[i].b])
dot[num_dot++]=side[i].b,vis[side[i].b]=1;
}
}
bool ispath()
{
int sum=0,i;
st=dot[0];
for(i=0;i<num_dot;i++)
if(degree[dot[i]]&1)
{
st=dot[i];
sum++;
if(sum>2)
return 0;
}
return 1;
}
void dfs(int s)
{
int i;
for(i=0;i<num_dot;i++)
if(road[s][dot[i]]>0)
{
road[s][dot[i]]--,road[dot[i]][s]--;
dfs(dot[i]);
step[no].a=s,step[no].b=dot[i],no++;
}
}
void showstep()
{
int i,j,flag;
memset(vis,0,sizeof(vis));
for(i=no-1;i>-1;i--)
for(j=0;j<num_side;j++)
if(!vis[j])
{
if(side[j].a==step[i].a&&side[j].b==step[i].b)
flag=1;
else if(side[j].a==step[i].b&&side[j].b==step[i].a)
flag=2;
else
flag=0;
if(flag!=0)
{
printf("%d %c\n",j+1,flag==1? '+':'-');
vis[j]=1;
break;
}
}
}
int main()
{
init();
if(ispath())
{
dfs(st);
if(no<num_side)
{
printf("No solution\n");
return 0;
}
showstep();
}
else
printf("No solution\n");
}

sgu101Domino的更多相关文章

随机推荐

  1. V形

    <!doctype html><html><head><meta charset="utf-8"><title>无标题文 ...

  2. QQ应用前景与范围文档

    QQ软件 前景与范围文档       当前版本: 版本1 作   者: 李飞 完成日期: 2013年11月3日 1.  业务需求 1.1 应用背景 20世纪后期网络的应用和21世纪的飞速发展,网络已经 ...

  3. Farseer.net轻量级开源框架 入门篇:使用前说明

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 框架性能测试 下一篇:Farseer.net轻量级开源框架 入门篇: 增.删.改. ...

  4. grunt 全局使用

    grunt 不同地方使用时需要将插件下载的当前文件夹,这是因为查找模块时是当前路径,这会造成多个工程使用时会需要下载多次,而这些东西又不应该存在于工程之中,所以应该将所有模块全局安装,然后在工程下面只 ...

  5. Codeforces_766_D_(并查集)

    D. Mahmoud and a Dictionary time limit per test 4 seconds memory limit per test 256 megabytes input ...

  6. Anniversary Cake

    Anniversary Cake Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 15704   Accepted: 5123 ...

  7. HDU_1072_Nightmare

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1072 题目描述:矩阵表示迷宫,0表示墙,1表示路,2表示起点,3表示终点,4表示重置炸弹时间(6秒),你需 ...

  8. swift Hashable Equatable

    /// You can use any type that conforms to the `Hashable` protocol in a set or /// as a dictionary ke ...

  9. MySQL(四)DQL语言——条件查询

    摘要:条件查询:条件表达式,逻辑表达式,模糊查询,like,通配符,转义字符,escape关键字,between and,in,is null,is not null,安全等于. 条件查询语法: SE ...

  10. 使用Way.EntityDB进行Entity Framework Core数据库建模

    Way.EntityDB是一个基于EF Core的数据层框架,它取消了EF Core的Migration机制,因为Migration并不是通用的,比如说sql server生成的migration,如 ...