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: 开始觉得这是一道简单得博弈 ...
- 【刷题】BZOJ 4805 欧拉函数求和
Description 给出一个数字N,求sigma(phi(i)),1<=i<=N Input 正整数N.N<=2*10^9 Output 输出答案. Sample Input 1 ...
- 通过欧拉计划学Rust编程(第54题)
由于研究Libra等数字货币编程技术的需要,学习了一段时间的Rust编程,一不小心刷题上瘾. 刷完欧拉计划中的63道基础题,能学会Rust编程吗? "欧拉计划"的网址: https ...
- HDU5780 gcd (BestCoder Round #85 E) 欧拉函数预处理——分块优化
分析(官方题解): 一点感想: 首先上面那个等式成立,然后就是求枚举gcd算贡献就好了,枚举gcd当时赛场上写了一发O(nlogn)的反演,写完过了样例,想交发现结束了 吐槽自己手速慢,但是发了题解后 ...
- Nyoj42 一笔画问题 (欧拉道路)
http://acm.nyist.net/JudgeOnline/problem.php?pid=42题目链接 #include <cstdio> #include <cstring ...
- poj2480(利用欧拉函数的积性求解)
题目链接: http://poj.org/problem?id=2480 题意:∑gcd(i, N) 1<=i <=N,就这个公式,给你一个n,让你求sum=gcd(1,n)+gcd(2, ...
- 欧拉函数 牛客寒假1 小a与黄金街道
题目链接 分析:这题用到了欧拉函数, 欧拉函数,用φ(n)表示 欧拉函数是求小于等于n的数中与n互质的数的数目 详细可以看看这篇博文https://www.cnblogs.com/linyujun/p ...
- hdu1286 找新朋友 欧拉函数模板
首先这一题用的是欧拉函数!!函数!!不是什么欧拉公式!! 欧拉函数求的就是题目要求的数. 关于欧拉函数的模板网上百度一下到处都是,原理也容易找,这里要介绍一下另一个强势模板. 在这一题的讨论里看到的. ...
随机推荐
- 总结jboss控制台,得出一下结论(数据库连接池相关)
jboss控制台中: http://127.0.0.1:8080/jmx-console/HtmlAdaptor?action=inspectMBean&name=jboss.jca%3Ase ...
- [VC]关于ocx控件的自己编写的dll问题
要是无法删除c:windows/cownloadprogrames下的文件时可以关掉所有的浏览器,然后在internate----程序---管理 加载项里 先把那个加载项 更新一下,或者禁用一下,或者 ...
- 2018.3.26 Linux下学习命令
Linux下的终端文件颜色说明 ---color[=WHEN] 用色彩辨别文件类型 WHEN 可以是'never'.'always'或'auto'其中之一 白色:表示普通文件 蓝色:表示目录 绿色:表 ...
- mini_batch GD
工作过程:训练总样本个数是固定的,batch_size大小也是固定的,但组成一个mini_batch的样本可以从总样本中随机选择.将mini_batch中每个样本都经过前向传播和反向传播,求出每个样本 ...
- C++ Stack 与String
// ConsoleApplication1.cpp : 此文件包含 "main" 函数.程序执行将在此处开始并结束. // #include "pch.h" ...
- JQuery EasyUI学习记录(三)
1.jQuery EasyUI messager使用方式 1.1 alert方法 $(function(){ //1.alert方法---提示框 $.messager.alert("标题&q ...
- OC和C++的混用2
苹果的Objective-C编译器允许用户在同一个源文件里自由地混合使用C++和Objective-C,混编后的语言叫Objective-C++.有了它,你就可以在Objective-C应用程序中使用 ...
- bash编程之循环控制:
bash编程之循环控制: for varName in LIST; do 循环体 done while CONDITION; do 循环体 done until CONDITION; do 循 ...
- Codevs1081 线段树练习 2
题目描述 Description 给你N个数,有两种操作 1:给区间[a,b]的所有数都增加X 2:询问第i个数是什么? 输入描述 Input Description 第一行一个正整数n,接下来n行n ...
- Spring Security 与 OAuth2(介绍)
https://www.jianshu.com/p/68f22f9a00ee Spring Security 与 OAuth2(介绍) 林塬 2018.01.23 11:14* 字数 3097 阅读 ...