sgu101Domino
给你一些边,假设存在欧拉路径就打出来
我的代码例如以下:
#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的更多相关文章
随机推荐
- javascirpt中的数字在计算机内存储为多少Byte
JavaScript内部,所有数字都是以64位浮点数形式储存,即使整数也是如此 8 Byte = 64bit Javascript中,由于其变量内容不同,变量被分为基本数据类型变量和引用数据类型变量. ...
- Rxjava1升级Rxjava2踩坑一记
Rxjava1升级Rxjava2坑 共存问题 通常情况下,如果我们希望在一个模块中既想使用rxjava1又想使用rxjava2,这个时候在运行的时候会出现一下报错: ... APK META/-INF ...
- 【转】jvm内存结构
JVM的基本结构 包括四部分:类加载器.执行引擎.内存区(运行时数据区).本地方法接口 类加载器:jvm启动时或类运行时将需要的class文件加载到JVM中. JVM内存申请过程如下: JVM 会试图 ...
- 使用morphia实现对mongodb的聚合查询
morphia是谷歌的一个针对mongodb的数据化持久框架: 关于mongodb的介绍不在这里展示,直接进入主题:采用morphia实现对mongodb的聚合查询 这里获取所有学生的分数总和 spr ...
- JS实现LOGO像雪花一样落下特效
<HTML><HEAD><TITLE>LOGO从上落下</TITLE> <SCRIPT language=JavaScript> //窗口改 ...
- Eigen库笔记整理(二)
Eigen/Geometry 模块提供了各种旋转和平移的表示 旋转矩阵直接使用 Matrix3d 或 Matrix3f Eigen::Matrix3d rotation_matrix = Eigen: ...
- 洛谷——P2094 运输
P2094 运输 题目描述 现在已知N件商品,和搬运它们其中每一件的费用.现在搬家公司老板Mr.sb决定让我们每次任意选取2件商品.然后这2件商品只算一件商品的费用.但是这个商品的搬运费用是将选出的2 ...
- HDU - 2044 - 一只小蜜蜂...(dp)
题意: 如题 思路: 仔细观察图 1-4和3-6其实是一样的答案,那么所有的方案都可以相减,意思为全部转化为从1开始 剩下的就是观察规律,仔细观察5号,能到5号蜂房的只有3和4,3和4到5号蜂房只有一 ...
- 浅谈AC自动机模板
什么是AC自动机? 百度百科 Aho-Corasick automaton,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法. 要学会AC自动机,我们必须知道什么是Trie,也就是字典树.Tr ...
- centos 7桌面和命令行转行
CentOS7图形界面与命令行界面(终端)切换(1)CentOS7 在图形界面进入dos界面 :ctrl+alt+F6 dos界面进入图形界面:ctrl+alt+F2 本机用的这个命令: (2)Cen ...