[ZOJ1103] Hike on a graph

用Python进行GEO数据挖掘(学习笔记四):富集分析 该笔记详细解释了富集分析的工作原理,并简要地利用gseapy在python中进行富集分析的操作。 阅读详情

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1103

 

题目大意:

给出一副无向完全图,且每个点也有和自己的边。每条边有一种颜色,给出起始时三个棋子的状态。每次按照规则移动一个棋子,问最少多少步可以把所有棋子移动到同一个位置去。

移动的规则:The following constraint is imposed on this: the piece may only be moved along arrows of the same colour as the arrow between the two opponents' pieces. 假设移动棋子为A,另外两个棋子为BC,由于图的形状,BC之间必有一条弧,A沿着移动的弧必须与弧BC同色。

 

解题思路:

建立一个访问标记数组,然后从起始p1,p2,p3状态进行bfs.

 

解题心得:

不要老想着哈希,这才50*50*50。

Segmentation Fault了很多次,最后推倒了才过的,也不知道究竟是推倒了什么才解决的。

以后queue定义在生命周期恰好的地方比较好,定义在外面的话还要手工pop。

对付多空格和换行的时候可以用cin>>t_char来解决,或者用scanf("%s", str); str[0]这样。

 

源代码:

#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <queue>
#include <algorithm>
using namespace std;
#define maxn 55

typedef struct node{
    int x, y, z, k;
}node;

bool init(node &start, int &n, bool v[][maxn][maxn], char a[][maxn] )
{
    char tmp;
    scanf("%d", &n);
    if (n==0) return false;
    
    scanf("%d%d%d", &start.x, &start.y, &start.z);
    start.x--; start.y--; start.z--;
    start.k=0;
    
    for (int i=0; i<n; i++)
        for (int j=0; j<n; j++)
            cin>>a[i][j];                   //新学猥琐方法 
    
    memset(v, 0, sizeof(bool)*maxn*maxn*maxn);
    return true;
}

int bfs(node start, int n, bool v[][maxn][maxn], char a[][maxn])
{
    int x, y, z;
    queue<node> q;
    node now, next;
    
    if (start.x==start.y && start.y==start.z) return 0;
    
    v[start.x][start.y][start.z]=1;
    q.push(start);
    
    while (!q.empty())
    {
        now=q.front();
        q.pop();
        x=now.x; y=now.y; z=now.z; now.k++;
        //move x
        next=now;
        for (int i=0; i<n; i++)
            if (a[x][i]==a[y][z] && !v[i][y][z])
            {
                if (i==y && y==z) return next.k;
                next.x=i;
                q.push(next);
                v[i][y][z]=1;
            }
        //move y
        next=now;
        for (int i=0; i<n; i++)
            if (a[y][i]==a[x][z] && !v[x][i][z])
            {
                if (x==i && i==z) return next.k;
                next.y=i;
                q.push(next);
                v[x][i][z]=1;
            }
        //move z
        next=now;
        for (int i=0; i<n; i++)
            if (a[z][i]==a[x][y] && !v[x][y][i])
            {
                if (x==y && y==i) return next.k;
                next.z=i;
                q.push(next);
                v[x][y][i]=1;
            }
    }
    return -1;
}

int main()
{
    int n, t;
    bool v[maxn][maxn][maxn];
    char a[maxn][maxn];
    node start;
    while (init(start, n, v, a))
    {
        if ((t=bfs(start, n, v, a))==-1) printf("impossible\n");      
        else printf("%d\n", t);
    }
    return 0;
}


从零到一:Qt与PCL的跨平台开发环境搭建全攻略 本文详细介绍了从零开始搭建Qt与PCL跨平台开发环境的完整流程,涵盖Windows、Linux和macOS三大平台。重点解析了Qt5与Qt6版本选择、PCL库安装配置、VTK集成等关键技术要点,并提供跨平台CMake项目模板和常见问题解决方案,助力开发者快速构建三维点云处理应用。 阅读详情

相关推荐

[WeChatMsg]导出csv格式微信聊天记录的手把手教程

手把手教大家如何导出自己的聊天记录得到csv文件,即使是电脑小白也可以轻松学会o(* ̄▽ ̄*)ブ

weixin_51094633的博客 1万+

ZOJ-1103-Hike on a Graph

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1103 题目大意: “Hike on a Graph”是一种在木板上玩的游戏,木板上有衣服无向图。图是完整的并画有所有回路,即任意两个位置之间都有一条标线,标线有各种不同的颜色。有三个游戏者,他们各有一个棋子。游戏开始时,这三个棋子放在涂上的固定位置。游戏者需要按照顺序移...

weixin_30558305的博客 159

系统安装、qt配置、安装pcie驱动

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 安装Linux系统指定:ununtu20.04并配置相关软件环境 前言 提示:这里可以添加本文要记录的大概内容: ununtu20.04、Qt 5.9.0、pcie驱动 提示:以下是本篇文章正文内容,下面案例可供参考 一、安装系统 制作系统盘(win10),在开机时按相应键进入BIOS,(华硕需要先改配置启动->CSM->开启->第一个选项选第一个或第二个),等待即可 进入后按照https://www.sysgeek.

weixin_44832804的博客 2204

【博弈】移棋子游戏(BSOI3969)

【博弈】移棋子游戏 Description 给定一个有N个节点的有向无环图,图中某些节点上有棋子,两名玩家交替移动棋子。  玩家每一步可将任意一颗棋子沿一条有向边移动到另一个点,无法移动者输掉游戏。  对于给定的图和棋子初始位置,双方都会采取最优的行动,询问先手必胜还是先手必败。 Input 第一行,三个整数N、M、K, N表示图中节点总数,M表示图

袋鼠与蒟蒻 2012

ue4 classuobject没有成员beginplay_【教程】UE4 C++实现简单的AI及遇到的坑

后续文章更新移步→微信公众号“虚幻社区”(mantra-xhsq),您的支持是我创作的动力。我们这篇文章的宗旨是用代码实现简单的AI,有多简单,只是搭建一个具有PawnSensing组件和回调的AI。重点也不是做一个AI,而是了解一下C++代码如何搭建最基本的AI(关于蓝图如何创建请自行百度)。如果英语还不错的话,可以移步 参考链接,链接中的内容除了创建基本的PawnSensing组件还有关于行为...

weixin_39929918的博客 1127

实例讲解Simulink应用层开发CAN报文解包及CAN信号设置方法

本文通过讲解MCU CAN解包模块的模块设置、输入输出信号的设置及仿真测试验证,说明了CAN解包模块的设置方法、CAN解包模块输入输出信号的设置方法以及CAN解包模块的仿真测试及修正方法。在模型搭建过程中,建议养成一种搭建完成仿真测试验证的习惯,在模块阶段发现错误,解决错误,避免在后期模块集成之后报出大量错误,增加解决错误的工作量和难度。希望通过本文的介绍能给相关技术人员带来一些参考和帮助。

qq_43011586的博客 5680

ZOJ1103-Hike on a Graph

#include <stdio.h> #include <memory.h> #include <iostream> using namespace std; int n; char g[51][51]; int step[51][51][51]; struct str{ char a,b,c; }list[51*51*51]; bool bfs(int ...

zjutsunny的博客 155

S32K3xx系列DMA驱动实战:EB配置与Mcal接口应用全解析(含Adc硬件触发示例)

本文深入解析S32K3xx系列MCU的DMA驱动开发,涵盖EB工具配置与Mcal接口应用,特别包含ADC硬件触发示例。通过详细架构分析、实战配置步骤和工业级应用案例,帮助开发者掌握AUTOSAR环境下DMA高效数据传输技术,提升汽车电子和工业控制系统的性能。

weixin_29162439的博客 463

ZOJ 1103 Hike on a Graph

简单BFS,就是题意理解了好长时间 题意:给你三个棋子,要求用最少的步数将这三个棋子移动到同一节点上。 每次可以沿一条边移动一个棋子,只有当该边的颜色与另外两个棋子之间的边的颜色相同时才可以移动。 1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> 4...

aegt43853的博客 99

使用 Simulink + Simscape Electrical 实现一个变压器耦合式单相全波整流器的仿真模型

本文介绍了基于Simulink的变压器耦合式单相全波整流器建模与仿真方法。详细说明了从项目创建、模块添加、电路搭建到参数配置的完整建模过程,重点分析了整流器的效率与损耗特性,包括变压器损耗和二极管导通损耗。通过仿真展示了输入输出波形特征,并提出了选用高效元件、优化变压器设计等改进建议。该案例为电力电子系统建模提供了实用参考,有助于深入理解整流电路工作原理和性能优化方法。

amy_mhd的博客 186

时间序列预测 — 预测数据集(负荷、风电、光伏、销量等)

GEFCom2014 “负荷预测数据”为竞赛的公共数据集,GEFCom2014 的负荷预测轨迹为概率负荷预测。

几度春风里的博客 2万+

zoj1103 Hike on a Graph

广搜题,把每移动一步所得的状态都存下来,如果3个玩家所在的位置相同就返回。。 # include<stdio.h> # include<string.h> # include<queue> using namespace std; char ch[10]; int n,map[55][55],p[5],visit[55][55][55]; st...

weixin_33869377的博客 109

使用 FastAPI 和 LangGraph 构建生产级智能体 AI 系统

这是一本关于使用 FastAPI 和 LangGraph 构建生产级智能体 AI 系统的详细书籍,全文约 10 万字。《Production-Grade Agentic AI System Design and Implementation: Building Agentic AI Systems Using FastAPI and LangGraph》随着人工智能(AI)技术的迅猛发展,智能体(Agent)作为能够自主感知、推理、决策和行动的实体,正逐渐成为构建复杂智能系统的核心。从个性化推荐、客户服务到

AI天才研究院 346

ZOJ 1103 Hike on a Graph(bfs)

Hike on a Graph Time Limit: 2 Seconds      Memory Limit: 65536 KB "Hike on a Graph" is a game that is played on a board on which an undirected graph is drawn. The graph is complete and has all

H煊的博客 377

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ZOJ 1103 Hike on a Graph(BFS)

题意:给出一个完全图,任意两点间都有边,每条边都有一个颜色,在某3个点上放了3个棋子,每次只允许让一个棋子通过一条边走到另一个点上并且走的这条边的颜色必须和另外两个棋子之间的边颜色相同(完全图,任意两点都有边),求走到同一个点上最少需要多少步. 思路:可以设计一个3维的状态,dis[x][y][z]代表3个点分别在x, y, z点上时候的最少步数,那么就可以用类似spfa的松弛方法来更新就可以了

蚂蚁大战大象 921

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

ZOJ 1103 Hike on a Graph(POJ 2415) (广搜)

<br />好吧,我承认,我屈服了,那个题(ZOJ1245 || POJ1471)我现在实在写不出来,那就换题吧……<br /> <br />我找到了这个题,不为别的,就因为它描述短……<br /> <br />但其实人家不好欺负的,弄懂题意好难啊……<br /> <br />开始一直不明白题意,我就不明白了那个实例是咋来的,后来在帖子区看到一位前辈提示,一针见血,于是就明白了题意:<br />是说有一张图,上面的路径都是着色的,开始的时候有3个盘子在确定的点上,现在让你按要求沿图中的路径移动盘子(一步只能

laoda扯一扯 2242

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

HDU-1252 || ZOJ-1103 || POJ-2415 Hike on a Graph(bfs)

Problem Description“Hike on a Graph” is a game that is played on a board on which an undirected graph is drawn. The graph is complete and has all loops, i.e. for any two locations there is exactly one

long-long-ago 438

[ACM_搜索] ZOJ 1103 || POJ 2415 Hike on a Graph (带条件移动3盘子到同一位置的最少步数 广搜)...

Description "Hike on a Graph" is a game that is played on a board on which an undirected graph is drawn. The graph is complete and has all loops, i.e. for any two locations t...

weixin_34401479的博客 150

[ACM_搜索] ZOJ 1103 || POJ 2415 Hike on a Graph (带条件移动3盘子到同一位置的最少步数 广搜)...

Description "Hike on a Graph" is a game that is played on a board on which an undirected graph is drawn. The graph is complete and has all loops, i.e. for any two locations there is exactly one arrow...

weixin_34268843的博客 138

[ZOJ1413][POJ1021] 2D Nim 非人品解法

ZOJ: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1413POJ: http://poj.org/problem?id=1021题目大意:其实和Nim问题是没有关系的。给出两个玩2D-Nim游戏的棋

Dango's happy life 1570

[ZOJ1144][POJ1104] Robbery

ZOJ:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1144POJ:http://poj.org/problem?id=1104题目大意:有大盗光顾了一个W*H的矩形城市。给出一些信息,t时刻大盗不在矩

Dango's happy life 1400

[ZOJ1462][POJ1112] Team Them Up!

ZOJ: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=462POJ: http://poj.org/problem?id=1112题目大意:把一些人分成两组,每一组中的人满足任意两个人都相互认识,且要求两组

Dango's happy life 1265

[ZOJ 1116 ] [ POJ 1911 ] A Well-Formed Problem

ZOJ:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1116题目大意:(对XML没有了解,只是按照字面意思理解了一下题意)与这样有起始结束声明的,name称为tag是empty el

Dango's happy life 1233

[ZOJ1021] The Willy Memorial Program

【题目大意】有一些竖直的圆筒状管子,管子间有理想的水平细管相连。一只蜘蛛停在某跟管子的某个高度上,从第一根管子往系统注水,问前往营救的老鼠有多长时间可以关闭热水阀门。    最终抽象为当水上升到指定位置的时候系统中的总水柱高度。 【解题思路】 AC思路:(参考“狗狗40题搞完纪念“)从第一根管子开始注水,采用优先队列的方式每次选取可注水且纵坐标最大(最低)的地方进行注水。若中途出现溢出现象,则永远

Dango's happy life 1190

[ZOJ1518][POJ1291] This Sentence is False

ZOJ: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1518POJ: http://poj.org/problem?id=1291题目大意:有n个句子,编号为1..n,为Sentence XXX is

Dango's happy life 1176
上一篇: string类
下一篇: [ZOJ 2423] Fractal
program_shun
博客等级 码龄17年 10粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值