生化危机 (20 分)
人类正在经历一场生化危机,许多城市已经被病毒侵袭,这些城市中的人们为了避免感染病毒,计划开车逃往其他没有被病毒入侵的城市(安全城市)。有些城市之间有公路直达,有些没有。虽然他们知道哪些城市是安全的,但是不知道有没有一条安全路径能够到达安全城市(只有该路径上经过的所有城市都是安全的,该路径才是安全路径)。请你编写一个程序帮助他们判断。
输入格式:
输入第一行为三个正整数,分别表示所有城市个数m(m<=100)、安全城市个数n(m<=50)、公路个数k(k<=100)。随后一行给出n个安全城市的编号。随后k行,每一行给出两个整数,表示连接一条公路的两个城市编号。最后一行输入两个整数,分别表示当前所在城市s、目标城市d。每行整数之间都用空格分隔。
输出格式:
若目标城市已被病毒入侵(非安全城市),输出"The City i is not safe!";若目标城市为安全城市且从当前所在城市能够经过一条安全路径到达目标城市,输出"The city can arrive safely!";若目标城市为安全城市但是从当前所在城市没有一条安全路径到达目标城市,输出"The city can not arrive safely!",i为目标城市编号。
输入样例1:
5 2 5
3 4
0 1
0 2
0 4
1 2
2 4
0 4
输出样例1:
The city 4 can arrive safely!
输入样例2:
5 2 5
3 4
0 1
0 2
0 4
1 2
2 4
0 3
输出样例2:
The city 3 can not arrive safely!
输入样例3:
5 2 5
3 4
0 1
0 2
0 4
1 2
2 4
0 1
输出样例3:
The city 1 is not safe!
思路:
本来一开始想这题觉得挺难的,需要用到图的深搜来遍历每一条路,最后来找一条安全的路到达目标城市,但是写完过完样例提交后,答案错误了。然后重新看了一遍题目,发现这题的思路因该是很简单的,直接用邻接矩阵存下城市就可以了,最后直接查询目标城市和目前所在的城市之间是否有通路就行了。
代码:
#include <stdio.h>
#define MAXN 100typedef struct
{int arcs[MAXN][MAXN];//邻接矩阵int vexnum,arcnum; //图当前的点数和边数
}AMGraph;int main()
{int n;//n个安全城市AMGraph G;scanf("%d %d %d",&G.vexnum, &n, &G.arcnum );//输入城市的个数、安全城市的个数、路的个数int safecity[MAXN];//安全城市for(int i=0;i<n;i++){scanf("%d",&safecity[i]);}for(int i=0;i<G.vexnum;i++){for(int j=0;j<G.vexnum;j++){G.arcs[i][j]=0;//初始化邻接矩阵为0}}for(int i=0;i<G.arcnum;i++){int x,y;scanf("%d %d",&x,&y);G.arcs[x][y]=1;//将有路的城市之间权值变为1G.arcs[y][x]=1;}int now,destination,flag=0;//所在城市和目的地scanf("%d %d",&now,&destination);for(int i=0;i<n;i++){if(destination==safecity[i])//查询目的地是否为安全城市,做上标记{flag=1;break;}}if(G.arcs[now][destination]==1){if(flag)//是安全城市并且有通路printf("The city %d can arrive safely!\n",destination);else //有通路但是不是安全城市{printf("The city %d is not safe!\n",destination);}}else{if(flag)//是安全城市但是没有通路printf("The city %d can not arrive safely!\n",destination);else printf("The city %d is not safe!\n",destination);//不是安全城市也没有通路}return 0;
}
生化危机 (20 分)相关推荐
- 7-3 生化危机 (20 分)java版
人类正在经历一场生化危机,许多城市已经被病毒侵袭,这些城市中的人们为了避免感染病毒,计划开车逃往其他没有被病毒入侵的城市(安全城市).有些城市之间有公路直达,有些没有.虽然他们知道哪些城市是安全的,但 ...
- 7-1 查找书籍(20 分)(程序设计天梯赛模拟练习题)
7-1 查找书籍(20 分) 给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价. 输入格式: 输入第一行给出正整数n(<10),随后给出n本书的信息.每本书 ...
- PTA—输出全排列 (20分) 递归回溯思想
PTA-输出全排列 (20分) 递归回溯思想 题目要求: 请编写程序输出前n个正整数的全排列(n<10),并通过9个测试用例(即n从1到9)观察n逐步增大时程序的运行时间. 输入格式: 输入给出 ...
- 2、求100以内的素数之和。(20分)
题目: /* 2.求100以内的素数之和.(20分) */ 代码: public class Two207 {public static void main(String[] args) {int s ...
- 1、输入四个整数,按照从小到大顺序输出。(20分)
题目: /* 1.输入四个整数,按照从小到大顺序输出.(20分) */ 代码: 注:题目说的是四个数的排序,我就直接写了个冒泡排序 public class One207 {public static ...
- /* * 编程题第五题(20分): 本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“
题目: 编程题第五题(20分): 本题要求你写个程序把给定的符号打印成沙漏的形状.例如给定17个"*",要求按下列格式打印 ***************** 所谓" ...
- /* * 编程题第四题(20分): 用1元5角钱人名币兑换5分、2分和1分的硬币(每一种都要有)共一百枚,问共有几种兑换方案?并输出每种方案。 */
题目: /* 编程题第四题(20分): 用1元5角钱人名币兑换5分.2分和1分的硬币(每一种都要有)共一百枚,问共有几种兑换方案?并输出每种方案. */ 我使用java做的 public class ...
- /* * 编程第三题(20分) 打印所有的水仙花数。所谓水仙花数是指一个三位数,其各位数字的立方和等于该数本身。(例153=1*1*1+3*3*3+5*5*5) */
题目: /* 编程第三题(20分) 打印所有的水仙花数.所谓水仙花数是指一个三位数,其各位数字的立方和等于该数本身.(例153=111+333+555) */ 我是用java做的 public cla ...
- /* * 编程第二题(20分): 一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第十次落地时,共经过多少米?第十次反弹多高? */
题目: /* * 编程第二题(20分): 一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下.求它在第十次落地时,共经过多少米?第十次反弹多高? */ 我是用java做的 public ...
最新文章
- asa hacker
- 如何搭建一个视频直播系统
- MySQL5.6解压版详细安装教程(附安装配置、MySQL数据库设置root管理员密码,MySQL字符集设置问题及解决办法)
- 几种主要的Linux版本之间的比较
- 用友 无法正确解析服务器,用友T3软件登陆软件时提示:“可能无法正确解析服务器名称或者相应的端口被禁用,请尝试输入服务器的IP地址”?...
- HDinsight 系列-使用证书登陆中国区Azure
- jsoup(java爬虫)
- 直接选择排序算法时间 / 空间复杂度
- SQLite文件查看工具DB Browser for SQLite
- 企业微信本地测试环境搭建
- C#学习笔记8 事件
- ASP.NET清除Cookies
- 搜狐公司董事局主席兼首席执行官——张朝阳名言4
- Google内部流传的反多样性文章(10页完整版中文翻译)
- 淘宝API_item_cat_get - 获得淘宝商品类目
- 【嵌入式20】STM32F103完成对SD卡的数据读取详细操作
- 20189200余超 2018-2019-2 移动平台应用开发实践第七周作业
- 论文解读 X-CLIP : Expanding Language-Image Pretrained Models for General Video Recognition
- 【经典算法题-10】背包问题(Knapsack Problem)
- 北京PM2.5浓度回归分析