题目链接:http://codeforces.com/contest/454/problem/E

题意:给出n个点和m条边,要求每一个点要走指定的奇数次或者是偶数次。

构造出一种走法。

题解:可能一开始会难以入手。其实要想改变这个点的奇偶次数只要回去上一个节点再回来就行。然后上一个节点会在

dfs回朔时再进行修改最后只要关注起点就行了。

  1. #include <iostream>
  2. #include <cstring>
  3. #include <vector>
  4. #include <cstdio>
  5. using namespace std;
  6. const int M = 1e5 + 10;
  7. vector<int>vc[M] , path;
  8. int num[M];
  9. bool vis[M];
  10. void dfs(int u , int pre) {
  11. int len = vc[u].size();
  12. path.push_back(u);
  13. num[u] ^= 1;
  14. vis[u] = true;
  15. for(int i = 0 ; i < len ; i++) {
  16. int v = vc[u][i];
  17. if(!vis[v] && v != pre) {
  18. dfs(v , u);
  19. path.push_back(u);
  20. num[u] ^= 1;
  21. }
  22. }
  23. if(num[u] == 1 && pre != -1) {
  24. num[u] ^= 1;
  25. num[pre] ^= 1;
  26. path.push_back(pre);
  27. path.push_back(u);
  28. }
  29. }
  30. int main() {
  31. int n , m;
  32. scanf("%d%d" , &n , &m);
  33. for(int i = 0 ; i < m ; i++) {
  34. int u , v;
  35. scanf("%d%d" , &u , &v);
  36. vc[u].push_back(v);
  37. vc[v].push_back(u);
  38. }
  39. for(int i = 1 ; i <= n ; i++) {
  40. scanf("%d" , &num[i]);
  41. }
  42. int pos = 1;
  43. for(int i = 1 ; i <= n ; i++) {
  44. if(num[i] == 1) {pos = i; break;}
  45. }
  46. memset(vis , false , sizeof(vis));
  47. dfs(pos , -1);
  48. if(num[pos] == 1) path.resize(path.size() - 1);
  49. int flag = 0;
  50. for(int i = 1 ; i <= n ; i++) {
  51. if(!vis[i] && num[i] == 1) {flag = 1; break;}
  52. }
  53. if(flag) printf("-1\n");
  54. else {
  55. printf("%d\n" , path.size());
  56. for(int i = 0 ; i < path.size() ; i++) {
  57. printf("%d " , path[i]);
  58. }
  59. printf("\n");
  60. }
  61. return 0;
  62. }

codeforces 454 E. Little Pony and Summer Sun Celebration(构造+思维)的更多相关文章

  1. CF 453C. Little Pony and Summer Sun Celebration

    CF 453C. Little Pony and Summer Sun Celebration 构造题. 题目大意,给定一个无向图,每个点必须被指定的奇数或者偶数次,求一条满足条件的路径(长度不超\( ...

  2. codeforces 453C Little Pony and Summer Sun Celebration

    codeforces 453C Little Pony and Summer Sun Celebration 这道题很有意思,虽然网上题解很多了,但是我还是想存档一下我的理解. 题意可以这样转换:初始 ...

  3. CF453C Little Pony and Summer Sun Celebration (DFS)

    http://codeforces.com/contest/456  CF454E Codeforces Round #259 (Div. 1) C Codeforces Round #259 (Di ...

  4. CF453C Little Pony and Summer Sun Celebration(构造、贪心(?))

    CF453C Little Pony and Summer Sun Celebration 题解 这道题要求输出任意解,并且路径长度不超过4n就行,所以给了我们乱搞构造的机会. 我这里给出一种构造思路 ...

  5. codeforces 454 D. Little Pony and Harmony Chest(状压dp)

    题目链接:http://codeforces.com/contest/454/problem/D 题意:给定一个序列a, 求一序列b,要求∑|ai−bi|最小.并且b中任意两数的最大公约数为1. 题解 ...

  6. Codeforces 454E. Little Pony and Summer Sun Celebration

    题意:给n个点m条边的无向图,并给出每个点的访问次数奇偶,求构造一条满足条件的路径(点和边都可以走). 解法:这道题还蛮有意思的.首先我们可以发现在一棵树上每个儿子的访问次数的奇偶是可以被它的父亲控制 ...

  7. CF453C Little Pony and Summer Sun Celebration

    如果一个点需要经过奇数次我们就称其为奇点,偶数次称其为偶点. 考虑不合法的情况,有任意两个奇点不连通(自己想想为什么). 那么需要处理的部分就是包含奇点的唯一一个连通块.先随意撸出一棵生成树,然后正常 ...

  8. CF453C-Little Pony and Summer Sun Celebration【构造】

    正题 题目链接:https://www.luogu.com.cn/problem/CF453C 题目大意 \(n\)个点\(m\)条边的一张无向图,每个节点有一个\(w_i\)表示该点需要经过奇数/偶 ...

  9. Codeforces Round #582 (Div. 3) E. Two Small Strings (构造,思维,全排列)

    题意:给你两个长度为\(2\)的字符串\(s\)和\(t\),你需要构造一个长度为\(3n\)的字符串,满足:含有\(n\)个\(a\),\(n\)个\(b\),\(n\)个\(c\),并且\(s\) ...

随机推荐

  1. 面试必谈的哈希,.Net 程序员温故而知新

    引言: 作为资深老鸟,有事没事,出去面试:找准差距.定位价值. 面试必谈哈希, Q1:什么是哈希? Q2:哈希为什么快? Q3:你是怎么理解哈希算法利用空间换取时间的? Q4:你是怎么解决哈希冲突的? ...

  2. go杂货铺

    json序列化 内存中变成可存储或传输的过程称之为序列化(dict,split,struct转string) package main import ( "encoding/json&quo ...

  3. 夯实Java基础(八)——代码块

    在Java中代码块指的是使用”{}”括起来的代码称为代码块.代码块一共分为4种:局部代码块,静态代码块,同步代码块,构造代码块. 1.局部代码块 局部代码块就是定义在方法体内部的代码块. public ...

  4. ns3 802.11b PHY model

    I use the ubuntu and do not install the chinse input. The Code: c file requires gnu gsl library, it ...

  5. hadoop学习(六)----HDFS的shell操作

    HDFS所有命令: [uploaduser@rickiyang ~]$ hadoop fs Usage: hadoop fs [generic options] [-appendToFile < ...

  6. [原创实践]RedHat Enterprise Linux 5 安装GCC和redis

    Redis的安装需要使用GCC,Red Hat Enterprise 5默认是不安装gcc的,需要自己手动安装. 1:查看系统中是否有gcc gcc -v 查看本机linux版本 lsb_releas ...

  7. HDU 4635 (完全图 和 有向图缩点)

    题目链接:HDU  4635 题目大意: 给你一个有向图,加有向边,使得这个图是简单有向图.问你最多加多少条有向边. 简单有向图: 1.不存在有向重边. 2.不存在图循环.(注意是不存在 “图” 循环 ...

  8. OCP培训 Oracle 12c/18c/19c OCP认证实战培训【送OCP优惠名额】

    一.OCP培训 Oracle 12c/18c/19c OCP认证全套实战培训[送OCP优惠名额],本课程内容 课程目标: 为满足想参加Oracle OCP考证的学员,风哥设计的一套比较全面OCP实战培 ...

  9. Zabbix数据库空间大小使用计算

    一.Zabbix的数据存储主要分类 1.历史数据 2.趋势数据 3.事件数据 二.每秒处理的数据量 顾名思义,例如,有3000个监控项(item),每60秒取一次值,即平均每秒有50(3000/60) ...

  10. net core Webapi基础工程搭建(六)——数据库操作_Part 1

    目录 前言 SqlSugar Service层 BaseService(基类) 小结 前言 后端开发最常打交道的就是数据库了(静态网站靠边),上一篇net core Webapi基础工程搭建(五)-- ...