POJ 1041 欧拉路

FC7300 SPI MCAL配置引导 Example - QMI8A01z外设:Example - QMI8A01z外设: 阅读详情

POJ 1041

题意:多组数据,输入x,y,z,表示结点x和结点y之间有一条序号为z的边,如果这个无向图中存在欧拉路,就字典序最小的欧拉路,如果不存在欧拉路就输出“Round trip does not exist. "。当输入0  0表示一组数据输入结束,题目保证了图的连通性。

Solution:首先根据欧拉路的定义判断是否存在欧拉路,如果存在的话再求字典序最小的欧拉路,一定是以边1为起始的欧拉路,然后将每个结点的边按序号从小到大排序,从而保证dfs的时候得到的是字典序最小的欧拉路。

AC_Code:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <queue>
#include <algorithm>
#define ll long long
using namespace std;
const int inf=0x3ffffff;
const int MAXN = 2003;
const int MAXM = 1000005;
const double eps = 1e-6;
vector<pair<int, int> > adj[MAXN];
//adj[i][j].first  表示节点i的第j条边的序号
//adj[i][j].second 表示节点i的第y条边的终点
bool vis[MAXM];

void add(int x, int y, int z)   //x和y之间有条边,序号为z
{
    adj[x].push_back(make_pair(z, y));
    adj[y].push_back(make_pair(z, x));
}

vector<int> path;

void dfs(int u) 
{
    for (int i = 0; i < adj[u].size(); i++)
    {
        if (!vis[adj[u][i].first])
        {
            vis[adj[u][i].first] = true;
            dfs(adj[u][i].second);
            path.push_back(adj[u][i].first);
        }
    }
}

bool solve()
{
    int origin = -1;
    for (int i = 0; i < MAXN; i++)
    {
        if (adj[i].size())
        {
            // 无向图中存在欧拉回路的条件是各个节点度都是偶数
            if (adj[i].size() % 2 == 1)
                return false;
            if (origin == -1)
                origin = i;
            sort(adj[i].begin(), adj[i].end());
            // 排序之后,保证最先找到的那条路是字典序最小的
        }
    }
    path.clear();
    memset(vis, false, sizeof(vis));
    if (origin != -1)
        dfs(origin);
    reverse(path.begin(), path.end());
    return true;
}

int main()
{
    int i, j, k;
    int x, y, z;
    while(1)
    {
        for (i = 0; i < MAXN; i++)
            adj[i].clear();
        scanf("%d%d", &x, &y);
        if (x == 0 && y == 0)
            break;
        do
        {
            scanf("%d", &z);
            add(x, y, z);
            scanf("%d%d", &x, &y);
        }
        while(x && y);
        if (solve())
        {
            for (int i = 0; i < path.size(); i++)
                printf("%d ", path[i]);
            puts("");
        }
        else
            puts("Round trip does not exist.");
    }
    return 0;
}

 

Leads、SDR、MQL、SQL、L2C术语概念,线索创建与清洗、线索分级模型、线索流转策略、线索的统计与分析 CRM中的“Leads”是什么?笔者在文中不仅较为全面地介绍了相关术语概念,还分析了线索的创建与清洗、线索的分级模型、线索流转策略以及线索的统计与分析。 阅读详情

相关推荐

永磁同步电机功率计算实战:从公式到避坑指南(附Excel计算模板)

本文详细解析永磁同步电机(PMSM)功率计算的实战技巧,涵盖三维参数体系、三相与单相系统差异、动态工况补偿及常见计算陷阱。特别提供Excel计算模板,帮助工程师快速准确完成功率计算,避免工业应用中的常见错误,提升工作效率。

x8y9z0的博客 805

poj1041 John's trip(欧拉回路+输出路径)

题意:一个无向图,问图中是否存在欧拉回路,如果存在,则输出字典序最小的那条欧拉回路(输入按序走过的所有边标号)。且题目中保证了该无向图是连通的。 思路:欧拉路径的输出方式可以参考刘汝佳入门经典P112中的代码。不过那里的图中的边是用(i,j)来表示的,而这里的图中的边是用一个数字编号表示的.所以源代码中还需要做点小修改.然后要保证从John的家作为起始点输出欧拉回路且保证字典序最小,因为eule

围巾的ACM博客 686

SolidWorks有限元分析流程

对于很多专业,在进行设计完成后,为了缩短开发周期,往往需要配合仿真结果进行,机械行业更是如此。平时大家多采用专业有限元仿真软件进行仿真分析,如ANSYS;不过SolidWorks软件因为制图简单,同时存在专用的有限元仿真模块Simulation,对于初学者往往更加适用,下面简单介绍下SolidWorks Simulation仿真流程。 1. 分析流程 关键步骤如下: **(1)创建算例;**对模型的每次分析都是一个算例,一个模型可以包含多个算例。 **(2)应用材料;**指定模型的材料属性,如铝合金、钢材等

DYH_BK的博客 3万+

POJ 1041(无向图欧拉回路)

这个题目和POJ 1086不同,1086是有向图欧拉回路,这个是无向图欧拉回路。还有一个很重要的一点,本题目事先声明是连通图,所以不需要进行图遍历验证连通性。剩下的就是判断是否存在欧拉路,然后进行输出。 本题目不要求字典序,但是本代码是按照字典序输出的。 下面是关于七桥问题以及欧拉路的百度百科,不清楚的朋友可以看看:http://baike.baidu.com/view/142962.htm,

zgkdzw的专栏 875

保姆级教程:用STM32H743+TJA1042T玩转FDCAN,CubeMX配置1M/5M双速率通信(附完整代码)

本文提供STM32H743与TJA1042T实现FDCAN双速率通信的保姆级教程,详细讲解CubeMX配置1M/5M双速率通信的全过程,包括硬件连接、时钟树配置、过滤器设置及中断管理,并附完整代码示例,助力开发者快速掌握FDCAN高速通信技术。

weixin_30698297的博客 473

从入门到精通:HyperMesh实体选择全攻略(含2025新界面操作)

本文系统解析了HyperMesh从基础到高级的实体选择技巧,重点介绍了2025新界面的交互逻辑与效率提升。内容涵盖选择模式、框选方法、右键菜单高级选择、图形窗口选择器与命令面板的智能联动,以及利用浏览器和过滤器进行精准定位的实战指南,帮助用户显著提升前处理建模效率。

open4的博客 1084

POJ1041 John's trip 欧拉回路路径查找

题目链接:http://poj.org/problem?id=1041 题目大意:一个城镇有n个二叉路口,这些路口由m条街道连接,某人想要从某个路口出发,经过所有的街道且每条街道只走一次,再回到出发点,让找出一个可行的路线,依次输出经过的街道编号,如果有多条路线,选择字典序最小的一条输出。 分析:经典的欧拉回路问题。因为是要输出街道编号,建图需要一些技巧。 实现代码如

AC_Gibson的专栏 1391

【运动规划算法项目实战】Artificial Potential Field算法(附ROS C++代码)

在机器人行业中,路径规划是一个关键的任务,它涉及到如何让机器人在复杂的环境中安全而高效地移动。人工势场算法(Artificial Potential Field Algorithm)是一种常用的路径规划方法,它借鉴了物理学中的势能概念,通过模拟力的作用来引导机器人的移动。本文将详细介绍人工势场算法的原理、在路径规划中的应用、算法优缺点以及代码实现。人工势场算法基于两种势场:斥力场和引力场。斥力场使机器人远离障碍物,而引力场将机器人吸引到目标位置。

xiewf的博客 1万+

poj 1041(欧拉回路+输出字典序最小路径)

题目链接:http://poj.org/problem?id=1041 思路:懒得写了,直接copy吧:对于一个图可以从一个顶点沿着边走下去,每个边只走一次,所有的边都经过后回到原点的路。一个无向图存在欧拉回路的充要条件是每个顶点的度是偶数, 对于有向图存在欧拉回路的条件是每个顶点的出度等于入度(就是出去的边数等于进来的边数)。根据这个首先判断存在欧拉回路不, 如果存在然后用DFS去找欧拉回路。...

weixin_34198762的博客 260

地统计插值学习心得(一)

(创建地统计图层工具用于根据现有的地统计图层或者地统计模型来创建包含新要素数据集的地统计图层,也就是使用构建好的地统计模型用到新的数据集中)这表明,远离极值的区域预测不受极值的影响,并且还表明,包括极值会导致钼元素浓度高的区域周围的预测明显变高。通常,我们使用同一个数据集进行建模和预测,但是在实际插值过程中,这两步的数据可以是不同的,这就是处理极值的诀窍。如果你的数据集有无法忽略的极值时(比如这些钼元素浓度),一种常见的方法是首先显式移除极值进行建模,然后在预测中使用整个数据集(包括极值)。

JData_Engineer的博客 286

【WRF-Chem第二期】WRF-Chem有关 namelist 详解

【WRF-Chem第二期】WRF-Chem有关 namelist 详解

WW、forever的博客 2156

POJ 1041 John's trip (欧拉回路)

题意:John买了新车,想开车去拜访他的朋友,已知每条街道上都恰巧有他的一个朋友,所以他想穿过每条街道一次并且回到起点。城镇上街道总数不超过1995,节点总数不超过44,任意一个节点所关联的街道总数不超过44,每一条街道所关联的两个节点都不同,每条街道的编号也不同。起点是第一次输入的两个节点中较小的那个。若存在多条回路,输出字典序最小的。 #include using namespace st

1084

从被秒封到稳过Cloudflare!Canvas/WebGL/WebRTC多维度浏览器指纹隐身全实战

反爬和反反爬,本质上是一场持续的博弈,没有100%的隐身,只有不断升级的伪装。网上很多教程只给了个基础的噪声代码,却没讲透反爬的检测逻辑,导致你用了还是被封。这套方案的核心,不是简单的API重写,而是站在反爬的角度,模拟真实用户的所有特征,保证所有指纹的一致性、合理性、完整性。目前这套方案我用了半年,跑了上千万次请求,稳过国内国外99%的主流反爬平台,没有出现过一次因为指纹关联导致的批量封禁。大家有什么更狠的反爬场景,或者更好的伪装技巧,欢迎评论区一起交流。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1193

poj 1041 John's trip 欧拉路

裸欧拉路,至于字典序就用连接表的时候按街道大小从小到大存边即可。 #include #include #include #include #include using namespace std; int vis[2005],in[2005],it[45]; int a[2005],cnt,b[2005],tot; struct pi{ int to; int id; }pp;

huantwofat 410

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

John's trip(POJ 1041)---欧拉路输出

题目链接 题目描述 Little Johnny has got a new car. He decided to drive around the town to visit his friends. Johnny wanted to visit all his friends, but there was many of them. In each street he had one fr...

weixin_43960284的博客 373

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

2018.09.15 poj1041John's trip(欧拉路输出方案)

传送门 一个欧拉路输出方案的板子题。 竟然难在读入233。 代码: #include<iostream> #include<cstdio> #include<cstring> #define N 55 #define M 2005 using namespace std; struct edge{int...

weixin_30617561的博客 64

非混合图欧拉路题集

前置技能: 非混合图欧拉路(一笔画) hdu1116 Play on Words 题意: 输入n个单词,问能否把所有单词排成一个序列,使得每个单词的第一个字母和上一个单词的最后一个字母相同(如acm、malform、mouse,单词接龙?),输入中可以有重复单词。 分析: 字母看成节点,单词看成有向边,问题就变为判断图中是否存在欧拉路。 hdu3018 Ant Trip 题意: 给n个点,m...

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 208

欧拉回路,欧拉路

http://www.cnblogs.com/pandy/archive/2009/05/07/1452209.html http://bchine.com/mjmjmtl/?p=241 参考以上: 判断欧拉路,欧拉回路: 注意图联通,可以DFS或者并查集 一.无向图 欧拉回路:每个顶点度数都是偶数 欧拉路:所有点度数为

KongWX 585

欧拉路和欧拉回路

欧拉路:欧拉路是指从图中任意一个点开始到图中任意一个点结束的路径,并且图中每条边通过的且只通过一次。   1.无向连通图存在欧拉路的条件: 所有点度都是偶数,或者恰好有两个点度是奇数,则有欧拉路。若有奇数点度,则奇数点度点一定是欧拉路的起点和终点,否则可取任意一点作为起点。 2.有向连通图存在欧拉路的条件(满足任一条件即可): (入度:有向图中某点作为图中边的 终点 的次数之和) (出度...

wangtao的博客 330

POJ 1041 贪心 + 欧拉回路

题解 传送门 POJ 1041 John’s trip 题解 求字典序最小的欧拉回路。DFSDFSDFS 求解欧拉回路时,贪心地先从编号小的边开始递归即可。 #include <algorithm> #include <cstdio> #include <cstring> #include <vector> using namespace std; const int maxn = 50, maxm = 2000; struct edge { int

neweryyy的博客 181

欧拉路 / 回路 / 有向/ 无向 / 字典顺序

/** 欧拉路就是一笔画问题,同时会衍生出好多问题 比如:单词接龙,就是给一堆英文单词,问是否能让其首尾相接 排成一列 这样可将每个单词看成一条边,首尾字母看成点,求是否存在一 条欧拉路 一、无向图 欧拉回路:每个顶点入度都是偶数 欧拉路:所有点度数为偶数或者只有两个点度数为奇数 二、有向图 欧拉回路:每个点入度等于

zcube的技术博客 914

POJ1041

欧拉路问题 本次比赛的水题 对于这题的无向图,要每一个点的度数都为偶数,才存在欧拉回路。 #include #include #include using namespace std; int G[50][2000]; //G[点][边] = 点 bool vis[2000]; int degree[50]; int stack[2000], top; int max(int a, i

无名山丘,崛起成峰 4146
上一篇: POJ1386Play on Words(欧拉回路)
下一篇: 有向图 无向图 欧拉路 欧拉图
flyzer
博客等级 码龄9年 27粉丝 146原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值