CCF第四题无向图打印路径
#include<iostream>
#include<vector>
#include<algorithm>
#include<stack>
#define N 10010
using namespace std; vector<long int> head[N];
stack<long int> way;
long int n;
bool visited[N][N];
bool vis[N];
long long int d[N]; void addEdge(long int x,long int y) {
head[x].push_back(y);
head[y].push_back(x);
d[x]++;
d[y]++;
} void dfs(int u) {
vis[u]=;
vector<long int>::iterator pos;
for(pos=head[u].begin(); pos!=head[u].end(); pos++) {
long int v=*pos;
if(!vis[v]) {
dfs(v);
}
} } void euler(long int u) {
vector<long int>::iterator pos;
//利用dfs的方法遍历所有的边
for(pos=head[u].begin(); pos!=head[u].end(); pos++) {
long int v=*pos;
if(!visited[u][v]) {
visited[u][v]=visited[v][u]=;
//我这里不用栈,而是在进行下一个点之前就把当前点输出,样例是过了,可是交上去只能得10分
//cout<<' '<<v;
euler(v);
//用栈的话就没问题,可以得90分。
way.push(v);
}
}
} int main() {
long long int m;
cin>>n>>m ;
while(m--) {
long int x,y;
cin>>x>>y;
addEdge(x,y);
}
//以前总是得90分的原因就是没有考虑图不连通的情况
//这里从第一个点出发dfs所有的点,最后检验即可
dfs();
bool flag=;
for(int i=; i<=n; i++)
if(vis[i]==) {
flag=;
break;
}
//如果是不连通的,直接输出-1
if(flag==) cout<<-;
else {
long long int odd_num=;
for(long int i=; i<=n; i++) {
sort(head[i].begin(),head[i].end());
if(d[i]%)
odd_num++;
}
if(odd_num>)
cout<<-;
else {
cout<<;
euler();
while(!way.empty()) {
cout<<' '<<way.top();
way.pop();
}
}
} return ;
}
CCF第四题无向图打印路径的更多相关文章
- CCF第四题无向图打印路径 欧拉问题
#include<iostream> #include<vector> #include<algorithm> #include<stack> #def ...
- 第十三次CCF第四题 1803——04 博弈
我又写了一个简洁版的2.0: 可以作为博弈搜索树的模板 : https://www.cnblogs.com/xidian-mao/p/9389974.html 废话ps: 开始觉得这是一道简单得博弈 ...
- CodeForces 10D. LCIS 最长公共上升子序列模板题 + 打印路径
推荐一篇炒鸡赞的blog. 以下代码中有打印路径. #include <algorithm> #include <iostream> #include <cstring& ...
- UVA624 CD,01背包+打印路径,好题!
624 - CD 题意:一段n分钟的路程,磁带里有m首歌,每首歌有一个时间,求最多能听多少分钟的歌,并求出是拿几首歌. 思路:如果是求时常,直接用01背包即可,但设计到打印路径这里就用一个二维数组标记 ...
- UVA 10054 The Necklace(欧拉回路,打印路径)
题目链接: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- AOE网上的关键路径(最长路径 + 打印路径)
题目描述 一个无环的有向图称为无环图(Directed Acyclic Graph),简称DAG图. AOE(Activity On Edge)网:顾名思义,用边表示活动的网,当然它也是DAG ...
- 经典算法题每日演练——第十四题 Prim算法
原文:经典算法题每日演练--第十四题 Prim算法 图论在数据结构中是非常有趣而复杂的,作为web码农的我,在实际开发中一直没有找到它的使用场景,不像树那样的频繁使用,不过还是准备 仔细的把图论全部过 ...
- SPFA和FLOYD算法如何打印路径
早晨碰到了一题挺裸的最短路问题需要打印路径:vijos1635 1.首先说说spfa的方法: 其实自己之前打的最多的spfa是在网格上的那种,也就是二维的 一维的需要邻接表+queue 以及对于que ...
- FatMouse's Speed ~(基础DP)打印路径的上升子序列
FatMouse believes that the fatter a mouse is, the faster it runs. To disprove this, you want to take ...
随机推荐
- 安装ubuntu和安装ubuntu后要安装的软件列表
安装ubuntu 老毛桃进入win pe修复启动项 在win pe下面制作ubuntu的安装盘,只用的软件是ultraISO 参考博客下面的分区的那篇文章 http://jingyan.baidu. ...
- JavaScript学习笔记——DOM_对document对象的内容、属性、样式的操作
javascript-对文档对象的内容.属性.样式的操作 一.操作内容 1. innerHTML 用来设置或获取对象起始和结束标签内的内容(识别html标签) 2. innerText 用来设置或获取 ...
- CentOS下crond定时任务详细介绍
目录 1.定时任务crond介绍... 2.crond定时任务限权... 3.Crontab用法... 4.Crontab命令的书写格式... 5.定时服务器时间同步... 6.写定时任务注意点.. ...
- Using Flash Builder with Flash Professional
http://help.adobe.com/en_US/flashbuilder/using/WSc5cd04c102ae3e97-6e5d439512e1414e588-8000.html
- CSS 控制Html页面高度导致抖动问题的原因
CSS 控制Html页面高度导致抖动,这类由高度导致页面抖动的问题,其实究其根本原因是滚动条是否显示导致的 在CSS中添加如下代码: html,body{ overflow-y:scroll;} ht ...
- rpm 命令
这些事rpm的常用参数!!! 你可以在linux下man 一下rpm就知道了!!! 不过是英文的,不然你可以百度一下rpm就知道了额!!! 下面我帮你贴几个!!!!rpm 常用命令1.安装一个包 # ...
- Open Yale course:Listening to Music
一.Introductionhttps://app.yinxiang.com /Home.action?offer=www_menu#n=4b034a29-986d-4914-8220-eb99c2e ...
- MVC 随记
2014-09-04 [1] Json var contact = new Object(); contact.firstname = "Jesper"; contact.surn ...
- Yii2 高级版新建一个 Api 应用
原文地址:http://www.getyii.com/topic/28 先在项目的根目录下复制一份 backend 为 api: cp backend/ api -r 拷贝 api 环境 cp -a ...
- [Asp.Net]获取客户端ip和mac地址
摘要 有时候,我们需要获取客户端的一些信息,以便进行统计.比如:客户端的唯一标识,ip等信息 IP 通过获取HTTP_X_FORWARDED_FOR,或者REMOTE_ADDR可以获取客户端的ip. ...