博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVa567_Risk(最短路)(小白书图论专题)
阅读量:6978 次
发布时间:2019-06-27

本文共 4669 字,大约阅读时间需要 15 分钟。

解题报告

题意:

有20个城市,仅仅能征服相邻的城市,问要征服目的城市,最少须要征服多少城市(包含目的城市)

思路:

多源最短路,直接floyd,点才20个。

#include 
#include
#include
#define inf 0x3f3f3f3fusing namespace std;int mmap[100][100],n;void floyd() { for(int k=1; k<=20; k++) for(int i=1; i<=20; i++) for(int j=1; j<=20; j++) if(mmap[i][j]>mmap[i][k]+mmap[k][j]) mmap[i][j]=mmap[i][k]+mmap[k][j];}int main() { int t,i,j,u,v,k=1,m; while(~scanf("%d",&m)) { for(i=1; i<=20; i++) { for(j=1; j<=20; j++) mmap[i][j]=inf; mmap[i][i]=0; } while(m--) { scanf("%d",&v); mmap[1][v]=mmap[v][1]=1; } for(i=2; i<=19; i++) { scanf("%d",&m); while(m--) { scanf("%d",&v); mmap[i][v]=mmap[v][i]=1; } } scanf("%d",&m); floyd(); printf("Test Set #%d\n",k++); for(i=1; i<=m; i++) { scanf("%d%d",&u,&v); printf("%2d to %2d: %d\n",u,v,mmap[u][v]); } printf("\n"); } return 0;}

  

Risk is a board game in which several opposing players attempt to conquer the world. The gameboard consists of a world map broken up into hypothetical countries. During a player's turn, armies stationed in one country are only allowed to attack only countries with which they share a common border. Upon conquest of that country, the armies may move into the newly conquered country.

During the course of play, a player often engages in a sequence of conquests with the goal of transferring a large mass of armies from some starting country to a destination country. Typically, one chooses the intervening countries so as to minimize the total number of countries that need to be conquered. Given a description of the gameboard with 20 countries each with between 1 and 19 connections to other countries, your task is to write a function that takes a starting country and a destination country and computes the minimum number of countries that must be conquered to reach the destination. You do not need to output the sequence of countries, just the number of countries to be conquered including the destination. For example, if starting and destination countries are neighbors, then your program should return one.

The following connection diagram illustrates the first sample input.

 

Input to your program will consist of a series of country configuration test sets. Each test set will consist of a board description on lines 1 through 19. The representation avoids listing every national boundary twice by only listing the fact that country 
I
 borders country 
J
 when 
I
 < 
J
. Thus, the 
I
th line, where 
I
 is less than 20, contains an integer 
X
 indicating how many ``higher-numbered" countries share borders with country 
I
, then 
X
 distinct integers 
J
 greater than 
I
 and not exceeding 20, each describing a boundary between countries 
I
 and 
J
. Line 20 of the test set contains a single integer (
$1 \le N \le 100$
) indicating the number of country pairs that follow. The next 
N
 lines each contain exactly two integers (
$1 \le A,B \le 20; A \ne B$
) indicating the starting and ending countries for a possible conquest.

There can be multiple test sets in the input file; your program should continue reading and processing until reaching the end of file. There will be at least one path between any two given countries in every country configuration.

 

For each input set, your program should print the following message ``
Test Set #
T
" where 
T
 is the number of the test set starting with 1 (left-justified starting in column 11).

The next NT lines each will contain the result for the corresponding test in the test set - that is, the minimum number of countries to conquer. The test result line should contain the start country code A right-justified in columns 1 and 2; the string `` to " in columns 3 to 6; the destination country code B right-justified in columns 7 and 8; the string ``" in columns 9 and 10; and a single integer indicating the minimum number of moves required to traverse from country A to country B in the test set left-justified starting in column 11. Following all result lines of each input set, your program should print a single blank line.

 

1 32 3 43 4 5 61 61 72 12 131 82 9 101 111 112 12 171 142 14 152 15 161 161 192 18 191 201 2051 202 919 518 1916 204 2 3 5 61 43 4 10 55 10 11 12 19 182 6 72 7 82 9 101 91 102 11 143 12 13 143 18 17 134 14 15 16 170002 18 201 191 2061 208 2015 1611 47 132 16

 

Test Set #1 1 to 20: 7 2 to  9: 519 to  5: 618 to 19: 216 to 20: 2Test Set #2 1 to 20: 4 8 to 20: 515 to 16: 211 to  4: 1 7 to 13: 3 2 to 16: 4

转载地址:http://xhupl.baihongyu.com/

你可能感兴趣的文章
如何用 Graylog 管理日志?- 每天5分钟玩转 Docker 容器技术(93)
查看>>
单例模式
查看>>
iOS多线程编程之NSOperation和NSOperationQueue的使用
查看>>
SAP QM 'QM System' 有什么控制作用?
查看>>
Health Check in eShop -- 解析微软微服务架构Demo(五)
查看>>
项目沟通管理计划
查看>>
[20160608]自治事务引起死锁.txt
查看>>
AliGenie AR Fuels the Ali New Retail Strategy - Interactive Marketing Activities
查看>>
一个最简单的通过WireShark破解SSL加密网络数据包的方法
查看>>
教你用TensorFlow和自编码器模型生成手写数字(附代码)
查看>>
荣之联“云桥OneBridge”让IT运维事半功倍
查看>>
中国人工智能学会通讯——人工智能在各医学亚专科的发展现状及趋势 1.3 人工智能在各医学亚专科的发展态势...
查看>>
新技术、新思维开创公共安全管理新模式
查看>>
新产品发布与A轮2000万美元 双喜临门后GrowingIO还要做什么
查看>>
《大数据、小数据、无数据:网络世界的数据学术》一 导读
查看>>
玉山银行的一名新员工“玉山小i随身金融顾问”
查看>>
消除危害 让BYOD策略更安全的几个秘诀
查看>>
云端卫士架构师讲DDoS攻击的智能防御之道
查看>>
《算法技术手册》一2.4.6 二次方的算法性能
查看>>
物联网时代全面降临
查看>>