当前位置: 首页 > 编程日记 > 正文

Firetruck UVA - 208

DFS+并查集

如果只用DFS的话会超时,用并查集剪枝,和起点终点不联通的点就不用跑了

这题有好多人写了博客,但是我觉得我的代码写的比较通俗易懂所以就贴上来了,我觉得我写代码的目标就是让任何人都能看懂,越小白越好(其实是因为真小白吧……

#include<bits/stdc++.h>
using namespace std;
int E[30][30];
int diste;
int mark[30];
int path[30];
int fin[30];
int ans;
int root[30];
void init()  
{  for(int i=1;i<=21;i++)  root[i] = i;  
}  
int find(int p)  
{  int t;  int child = p;  while(p != root[p])  p = root[p];  while(child != p)  {  t = root[child];  root[child] = p;  child = t;  }  return p;  
}  
void merge(int x, int y)  
{  int fx = find(x);  int fy = find(y);  if(fx != fy)  root[fx] = fy;  
}  
void input()
{memset(E,0,sizeof E);int a,b;while(scanf("%d%d",&a,&b)&&a&&b){E[a][b]=1;E[b][a]=1;  merge(a,b);}
}
void print(int g)
{int q=path[g];int len=0;fin[len++]=g;while(q!=0){fin[len++]=q;q=path[q];}while(len--)printf("%d%c",fin[len],len==0?'\n':' ');
}void DFS(int g)
{    if(g==diste){print(g);ans++;return;}mark[g]=1;for(int a=1;a<=21;a++){if(E[a][g]&&!mark[a]&&find(a)==find(diste)){path[a]=g;DFS(a);    }}mark[g]=0;}int main()
{int t=0;while(scanf("%d",&diste)!=EOF){ans=0;t++;init();input();printf("CASE %d:\n",t);//    for(int i=1;i<=diste;i++)//    cout<<i<<":"<<root[i]<<endl;DFS(1);printf("There are %d routes from the firestation to streetcorner %d.\n",ans,diste);}return 0;
}

转载于:https://www.cnblogs.com/xiachongyubing/p/7425215.html

相关文章:

MCSE2003学习之三

安装&#xff37;&#xff29;&#xff2e; &#xff38;&#xff30;&#xff38;&#xff30;的系统中&#xff0c;&#xff13;&#xff12;位的系统最大支持的&#xff32;&#xff21;&#xff2d;为&#xff14;&#xff27;&#xff0c;而&#xff16;&#xff14;位的…

【LeetCode】230#二叉搜索树中第K小的元素

题目描述 给定一个二叉搜索树&#xff0c;编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。 说明&#xff1a; 你可以假设 k 总是有效的&#xff0c;1 ≤ k ≤ 二叉搜索树元素个数。 示例 1: 输入: root [3,1,4,null,2], k 13/ \1 4\2 输出: 1 示例 2: 输入: root …

runaway深度递归函数测试及相关汇编指令

这是一个深度递归的例子。 #include <stdio.h> #include <stdlib.h>int recurse(int x) {int a[1<<15]; /* 4 * 2^15 64 KiB */printf("x %d. a at %p\n", x, a); a[0] (1<<14)-1;a[a[0]] x-1;if (a[a[0]] 0)return -1;return rec…

codeforce843B Interactive LowerBound

题意&#xff1a;交互式的题&#xff0c;给你n,s, x&#xff0c;链表元素有n个&#xff0c;开始的位置是s&#xff0c;每次询问输入数组的下标&#xff0c;可以知道对应链表上的数和链表下一个数的位置&#xff0c;只能询问2000次&#xff0c;要找到第一个大于等于x的数 题解&a…

[原]SSL 开发简述(Delphi)

一、 简介 现在网上有关SSL的资料较多的是基于VC开发&#xff0c;Delphi的SSL开发资源很少。 本文主要使用OpenSSL为基础&#xff0c;讲述SSL的有关开发流程。OpenSSL功能非常丰富&#xff0c;具体可以去她的官方网看看。可惜没有中文说明。 OpenSSL&#xff1a;htt…

如何每天自动备份 SourceSafe (转)

在Microsoft Visual SourceSafe中提到管理员应该每天或者至少每周备份一次SourceSafe中的内容。这里&#xff0c;我们利用现有的工具实现每天自动备份SourceSafe中的内容。<?XML:NAMESPACE PREFIX O />1. 用到的工具a. ssarc.exe. ssarc.exe是随着SourceSafe提供…

log.net的应用示例(日志)

log.net的应用很多朋友很清楚&#xff0c; 为了使不会用的朋友快速了解&#xff0c;这里我也搜了一些朋友的贴子http://blog.hnce.net/post/246.html后做如下示例&#xff0c;希望能对大家有所帮助&#xff1a; 示例如下&#xff1a; log4net的配置文件link Log4Net.config1&l…

H国的身份证号码(搜索)

个人心得&#xff1a;巧妙利用数字进行维护就好了&#xff0c;深搜还是有点心得的&#xff1b; #1558 : H国的身份证号码I 时间限制:10000ms单点时限:1000ms内存限制:256MB描述 H国的身份证号码是一个N位的正整数(首位不能是0)。此外&#xff0c;由于防伪需要&#xff0c;一个N…

Linux命令之more

more [选项] 文件 […] more是一个过滤器&#xff0c;用于一次浏览一个屏幕的文本。 在more过滤器下有一些常用键&#xff0c;<Space>表示显示下一屏内容&#xff1b;<Enter>表示显示文本的下一行内容&#xff1b;<H>显示帮助&#xff1b;<B>上一页&am…

图的创建及深度遍历

#include <iostream> using namespace std; #include <malloc.h> #include <stdio.h> #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2#define INFINITY INT_MAX //最大值为无穷大 #define MAX_VER…

showModalDialog 传值及刷新

(一)showModalDialog使用例子,父窗口向子窗口传递值,子窗口设置父窗口的值,子窗口关闭的时候返回值到父窗口. farther.html --------------------------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><TITL…

简单实现ConfigurationManager.AppSettings[]效果存储系统变量

代码一:存储变量和常量的Class.Code1using System; 2using System.Collections.Generic; 3using System.Text; 4using System.Collections.Specialized; 5 6namespace TestTemp.ConsoleApp 7{ 8 public class Config 9 {10 string[] keys new string[] { "N…

数据结构|-常见数据结构整理

归纳总结了一下数据机构的常用类型&#xff0c;个人理解常用的数据机构可以分为线性表、栈、队列、树&#xff0c;线性表包括顺序表和链表&#xff0c;栈和队列应当属于特殊的线性表&#xff0c;有几个概念和误区需要先说一下 顺序表和线性表的关系&#xff1a; 线性表是逻辑概…

数据结构课程上机参考代码

SqList #include <iostream>using namespace std;#include <malloc.h>#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef int Status; /* int是函数的类型,其值是函数结果状态代码&#xff0c;如OK等 */…

我的路子 - 发现游戏为模型的软件架构方式

总觉得如果一个内容被深刻地理解了&#xff0c;那么当在他口中说出来的时候&#xff0c;应该是很简单才对。 所以一直觉得&#xff0c;编程里那些不容易理解的&#xff0c;需要记住很多内容的东西都是有缺陷的。自己又比较自我认可强&#xff0c;看不到别人的角度&#xff0c;表…

Vim对中文编码的支持[转]

Vim对中文编码的支持[转] Vim对中文编码的支持 1、支持中文编码的基础 Vim要更好地支持中文编码需要两个特性&#xff1a;multi_byte和iconv&#xff0c;可以用|:version|命令检查当前使用的Vim是否支持&#xff0c;否则的话需要重新编译。 2、影响中文编码的设置项 Vim中有几个…

C/C++中extern关键字详解

1 基本解释 &#xff1a;extern可以置于变量或者函数 前&#xff0c;以标示变量或者函数的定义在别的文件中 &#xff0c;提示编译器遇到此变量和函数时在其他模块中寻找其定义 。此外extern也可用来进行链接指定。 也就是说extern有两个作用&#xff0c;第一个,当它与"C&…

关于WPF的ComboBox中Items太多而导致加载过慢的问题

【WFP疑难】关于WPF的ComboBox中Items太多而导致加载过慢的问题 周银辉我的一个同事在加载字体列表时遇到了一个让人崩溃的问题&#xff1a;由于系统字体可能较多&#xff08;可能有好几百项&#xff09;&#xff0c;导致使…

什么是3G通信

现在“3G通信”快要成为人们嘴上的口头禅了&#xff0c;那么您知道到底什么是3G通信吗&#xff1f;所谓3G&#xff0c;其实它的全称为3rd Generation&#xff0c;中文含义就是指第三代数字通信。1995年问世的第一代数字手机只能进行语音通话&#xff1b;而1996到1997年出现的第…

springMVC入门截图

mvc在bs系统下的应用 ---------------------------------------------------- 在web.xml中配置前端控制器&#xff08;系统提供的一个servlet类 只需配置即可 无需程序员开发 &#xff09; -------------------------------------------------------------- ----------------…

Linux环境下的网络编程

本文介绍了在Linux环境下的socket编程常用函数用法及socket编程的一般规则和客户/服务器模型的编程应注意的事项和常遇问题的解决方法&#xff0c;并举了具体代 码实例。要理解本文所谈的技术问题需要读者具有一定C语言的编程经验和TCP/IP方面的基本知识。要实习本文的示例&am…

WEBSHELL恶意代码批量提取清除工具

场景 使用D盾扫描到WEBSHELL后可以导出有路径的文本文件。 最后手动去把WEBSHELL复制到桌面然后以文件路径命名&#xff0c;挨个删除。 D盾界面是这样的。 手动一个个找WEBSHELL并且改名效率太低&#xff0c;使用MFC写一个小工具方便去现场以后查WEBSHELL的工作。 技术思路 D盾…

判定两棵二叉树是否相似以及左右子树交换、层次编号

#include <iostream> using namespace std; #include <malloc.h> #include <stdio.h> #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2#define MAX_TREE_SIZE 100//二叉树的最大结点数 typedef cha…

[Tracking] KCF + KalmanFilter目标跟踪

基于KCF和MobileNet V2以及KalmanFilter的摄像头监测系统 简介 这是一次作业。Tracking这一块落后Detection很多年了&#xff0c;一般认为Detection做好了&#xff0c;那么只要能够做的足够快&#xff0c;就能达到Tracking的效果了&#xff0c;实则不然&#xff0c;现在最快的我…

.net wap强制输出WML

强制输出WML:在web.config添加下面内容<system.web>下<browserCaps><result type"System.Web.Mobile.MobileCapabilities, System.Web.Mobile, Version1.0.5000.0, Cultureneutral, PublicKeyTokenb03f5f7f11d50a3a"/><use var"HTTP_USER_…

Tomcat在Linux上的安装与配置

1.安装好linux系统&#xff0c;下载适合的 Tomcat(jdk)下载JDK与Tomcatjdk 下载Tomcat 下载参考地址&#xff1a;jdk下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.htmltomcat下载地址:http://tomcat.apache.org /download-70.cgi…

上机实践 1 初识 Java

实验 1 一个简单的 Java 应用程序 一、实验目的 掌握开发 Java 应用程序的 3 个步骤&#xff1a;编写源文件、编译源文件和运行应用程序。 二、实验要求 1. 参照教材中的指导&#xff0c;使用网络课程中提供的链接下载并安装 JKD 并配置环境变量。 2. 编写一个简单的 Java…

论COSPLAY / 谨以此文纪念我暂短的Cos生涯

COSPLAY是什么COSPLAY这一名词是是英文Costume Play&#xff08;服饰扮演&#xff09;的缩写&#xff0c;从事COSPLAY相关活动的人员一般被称为COSPLAYER。目前流行的COSPLAY活动内容主要集中于通过服装、道具、饰品等扮演动漫作品中的人物角色&#xff0c;而从宽泛的意义上来说…

python 3下对stm32串口数据做解析

1、最近有个想做一个传感器数据实时显示的上位机&#xff0c;常规的数据打印太频繁了&#xff0c;无法直观的看出数据的变化。 python下的上位机实现起来简单一点&#xff0c;网上找了一些python界面Tkinter相关资料和python串口的demo.测试实现了简单的数据显示。 Mark 一下问…

《深入理解计算机系统》第八章——异常控制流知识点总结

课本习题&#xff1a; 8.11 #include <unistd.h> #include <stdio.h>int main(){int i;for(i0;i<2;i) fork();printf("hello\n");exit(0);}/** Result:* hello* hello* hello* hello*/ 8.12 #include <stdio.h> #include <unistd.h>vo…