2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 J Minimum Distance in a Star Graph 广度优先搜索
来源:互联网 发布:淘宝内部优惠券采集 编辑:程序博客网 时间:2024/06/06 20:53
In this problem, we will define a graph called star graph, and the question is to find the minimum distance between two given nodes in the star graph.
Given an integer n, an n−dimensional star graph, also referred to as Sn, is an undirected graph consisting of n! nodes (or vertices) and ((n−1) ∗ n!)/2 edges. Each node is uniquely assigned a label x1 x2 ... xnwhich is any permutation of the n digits 1,2,3,...,n. For instance, an S4 has the following 24 nodes 1234,1243,1324,1342,1423,1432,2134,2143,2314,2341,2413,2431,3124,3142,3214,3241,3412,3421,4123,4132,4213,4231,4312,4321. For each node with label x1 x2x3 x4 ... xn, it has n−1 edges connecting to nodes x2 x1 x3 x4 ... xn, x3 x2 x1 x4 ... xn, x4 x2 x3 x1 ... xn, ..., and xn x2 x3 x4 ... x1. That is, the n−1 adjacent nodes are obtained by swapping the first symbol and the d−th symbol of x1 x2 x3 x4 ... xn, for d=2,...,n. For instance, in S4, node 1234 has 3 edges connecting to nodes 2134, 3214, and 4231. The following figure shows how S4 looks (note that the symbols a, b, c, and d are not nodes; we only use them to show the connectivity between nodes; this is for the clarity of the figure).
In this problem, you are given the following inputs:
- n: the dimension of the star graph. We assume that n ranges from 4 to 9.
- Two nodes x1 x2 x3 ... xn and y1 y2 y3 ... yn in Sn.
You have to calculate the distance between these two nodes (which is an integer).
Input Format
n (dimension of the star graph)
A list of 5 pairs of nodes.
Output Format
A list of 5 values, each representing the distance of a pair of nodes.
样例输入
41234 42311234 31242341 13243214 42133214 2143
样例输出
12213
题目来源
2017 ACM-ICPC 亚洲区(南宁赛区)网络赛
题意:就是先给你一个数n,接下来有 n 行,每行输入两个数位为 n 的数 s 和 t ,问 s 怎么用最小的步骤变成 t ,变化条件:s 在每一步都能变成 n - 1 个数,假设 s 的每一个数位分别是:x1, x2, x3, ......, xn,则在一个步骤中, s 的第一个数位的数能跟后面的每一个数位交换一次,例如 s 是四位数x1x2x3x4,则 s 第一步能变成:x2x1x3x4 , x3x1x2x4 , x4x1x2x3,这三个数。
题解:这道题用广搜做。
附代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <cmath>
#include <queue>
#include <map>
using namespace std;
typedef long long LL;
///o(っ。Д。)っ AC万岁!!!!!!!!!!!!!!
const int maxn = 100;
struct node
{
string book;
int s;
}star, eq;
queue<node>first;
int bfs(int n)
{
map<string, bool>maps;
first.push(star);
struct node exch, rec;
while(!first.empty())
{
rec = first.front();
first.pop();
for(int i = 0; i < n; i++)
{
exch = rec;
swap(exch.book[0], exch.book[i]);
exch.s = rec.s + 1;
if(exch.book == eq.book)
{
return exch.s;
}
if(!maps[exch.book])
{
first.push(exch);
maps[exch.book] = true; ///记得要保存每一次的变化,不然会爆内存
}
}
}
}
int main()
{
int n;
while(scanf("%d ", &n) != EOF)
{
char ch;
for(int i = 1; i <= 5; i++)
{
cin >> star.book;
cin >> eq.book;
star.s = eq.s = 0;
printf("%d\n", bfs(n));
while(!first.empty())
{
first.pop();
}
}
}
return 0;
}
/*
*/
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 J Minimum Distance in a Star Graph 广度优先搜索
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛(J.Minimum Distance in a Star Graph)
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛- J. Minimum Distance in a Star Graph
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 J. Minimum Distance in a Star Graph
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 J.Minimum Distance in a Star Graph
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 Minimum Distance in a Star Graph
- Minimum Distance in a Star Graph BFS/康托展开 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 J. Minimum Distance in a Star Graph(bfs+状态保存)
- 2017 ACM-ICPC南宁网络赛: J. Minimum Distance in a Star Graph(BFS)
- 2017 icpc 南宁赛区 J. Minimum Distance in a Star Graph(bfs)
- 2017南宁网络赛J.Minimum Distance in a Star Graph(bfs求最短路)
- 计蒜客 Minimum Distance in a Star Graph 2017icpc南宁赛区 字符串bfs
- Minimum Distance in a Star Graph(南宁网络赛)
- [计蒜客16959] Colored Graph [2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛 J]
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 A. Weather Patterns(阅读题)
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 A. Weather Patterns
- 自定义bs soup的抓取函数,查找不含某个class属性tag 以及一个小问题'NoneType' object has no attribute '__getitem__'
- URAL 1996 Cipher Message 3 FFT KMP
- leetcode200. Number of Islands
- 在maven项目中使用Junit的assertThat()方法时,is()方法的使用
- Linux之Shell基础
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 J Minimum Distance in a Star Graph 广度优先搜索
- xtu 8
- bzoj 4590: [Shoi2015]自动刷题机
- kibana安装使用
- jquery实现全选 全不选效果
- hdu6206 Apple 2017icpc青岛赛区 java高精度类
- C++ 容器的正向和反向迭代
- 461. Hamming Distance
- py-faster-rcnn 的常见错误