51nod 1445:变色DNA 最短路变形
多组测试数据,第一行一个整数T,表示测试数据数量,1<=T<=5
每组测试数据有相同的结构构成:
每组数据第一行一个整数N,2<=N<=50。
之后有N行,每行N个字符,表示狼的变色矩阵,矩阵中只有‘Y’与‘N’两种字符,第i行第j列的字符就是colormap[i][j]。
每组数据一行输出,即最小代价,无解时输出-1。
3
3
NYN
YNY
NNN
8
NNNNNNNY
NNNNYYYY
YNNNNYYN
NNNNNYYY
YYYNNNNN
YNYNYNYN
NYNYNYNY
YYYYYYYN
6
NYYYYN
YNYYYN
YYNYYN
YYYNYN
YYYYNN
YYYYYN
1
0
-1
一开始题意完全理解错了,化简一下题意。。。
#include <iostream>
#include <algorithm>
#include <cmath>
#include <vector>
#include <string>
#include <cstring>
#pragma warning(disable:4996)
using namespace std; const int MAX = 0x7fffffff;
char val[52][52]; int minn_cnt;
int n, num, test;
int edge[52][52];
int vist[52], minidis[52]; void init()
{
int i, j;
memset(vist, 0, sizeof(vist)); for (i = 1; i <= num; i++)
{
for (j = 1; j <= num; j++)
{
edge[i][j] = -1;
}
}
for (i = 1; i <= num; i++)
{
vist[i] = 0;
minidis[i] = MAX;
}
} void dijkstra(int i)
{
int j, k;
int position = i; vist[position] = 1;
minidis[position] = 0; for (j = 1; j <= num - 1; j++)//一共要添加进num-1个点
{
for (k = 1; k <= num; k++)
{
if (vist[k] == 0 && edge[position][k] != -1 && minidis[position] + edge[position][k] < minidis[k])//新填入的点更新minidis
{
minidis[k] = minidis[position] + edge[position][k];
}
}
int min_value = MAX, min_pos = 51;
for (k = 1; k <= num; k++)
{
if (vist[k] == 0 && minidis[k] < min_value)//比较出最小的那一个作为新添入的店
{
min_value = minidis[k];
min_pos = k;
}
}
vist[min_pos] = 1;
position = min_pos;
}
} int main()
{
//freopen("i.txt", "r", stdin);
//freopen("o.txt", "w", stdout); int i, k;
cin >> test; while (test--)
{
cin >> n;
num = n;
init();
for (i = 1; i <= n; i++)
{
cin >> val[i] + 1;
minn_cnt = 0;
for (k = 1; k <= n; k++)
{
if (val[i][k] == 'Y')
{
edge[i][k] = minn_cnt;
minn_cnt++;
}
}
}
memset(vist, 0, sizeof(vist));
fill(minidis, minidis + 52, MAX); dijkstra(1); if (minidis[n] > 2500)
cout << -1 << endl;
else
cout << minidis[n] << endl;
}
//system("pause");
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
51nod 1445:变色DNA 最短路变形的更多相关文章
- 51nod 1445 变色DNA(dij)
题目链接:51nod 1445 变色DNA 看了相关讨论再去用最短路:val[i][j]之间如果是'Y',说明i可以到达j,并且i到达j的代价是i那行 1到j-1 里面'Y'的数量. 最后,求 0到n ...
- 51NOD 1445 变色DNA
1445 变色DNA 有一只特别的狼,它在每个夜晚会进行变色,研究发现它可以变成N种颜色之一,将这些颜色标号为0,1,2...N-1.研究发现这只狼的基因中存在一个变色矩阵,记为colormap,如果 ...
- 51nod 1445 变色DNA ( Bellman-Ford算法求单源最短路径)
1445 变色DNA 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 有一只特别的狼,它在每个夜晚会进行变色,研究发现它可以变成N种颜色之一,将这些颜色标号为0,1 ...
- 51nod 1445 变色DNA(最短路变形)
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1445 题意: 思路: 挺好的一道题目,如果$colormap[i][j] ...
- 51nod_1445 变色DNA 最短路模板 奇妙思维
这是一道最短路模板题,但是在理解题意和提出模型的阶段比较考验思维,很容易想到并且深深进入暴力拆解题目的无底洞当中. 题意是说:给出一个邻接矩阵,在每个点时,走且仅走向,合法路径中编号最小的点.问题是是 ...
- POJ-2253.Frogger.(求每条路径中最大值的最小值,最短路变形)
做到了这个题,感觉网上的博客是真的水,只有kuangbin大神一句话就点醒了我,所以我写这篇博客是为了让最短路的入门者尽快脱坑...... 本题思路:本题是最短路的变形,要求出最短路中的最大跳跃距离, ...
- POJ 3635 - Full Tank? - [最短路变形][手写二叉堆优化Dijkstra][配对堆优化Dijkstra]
题目链接:http://poj.org/problem?id=3635 题意题解等均参考:POJ 3635 - Full Tank? - [最短路变形][优先队列优化Dijkstra]. 一些口胡: ...
- POJ 3635 - Full Tank? - [最短路变形][优先队列优化Dijkstra]
题目链接:http://poj.org/problem?id=3635 Description After going through the receipts from your car trip ...
- POJ-1797Heavy Transportation,最短路变形,用dijkstra稍加修改就可以了;
Heavy Transportation Time Limit: 3000MS Memory Limit: 30000K Description Background Hugo ...
随机推荐
- P4710 平抛运动
题目:https://www.luogu.org/problemnew/show/P4710 $$ v_x = v_{x_0} = v \ sin \ \theta, \ v_y = v_{y_0} ...
- 堆(c++)
5分钟速成堆 FBI⚠WARNING 本文要素过多 吐槽 堆是我迄今为止学过最简单的数据结构 我还没学会最小生成树.最短路时就学会了 堆实用高效,值得推荐 (如果你看完了这篇文章还不会,你可以直接Co ...
- 使用YII缓存注意事项
在使用YII自身缓存时,在main.php文件配置中一定要配置keyPrefix,如下图: 'cache' => array( 'class' => 'CFileCache', 'keyP ...
- Jquery+ajax模板
$.ajax({ url:'', type:'POST', //GET async:true, //或false,是否异步 data:{ name ...
- 在javaweb中从servlet端向jsp端传递数据的方法
1.servlet端: request.setAttribute("student", student)://向请求域中添加名称为student,内容为student中内容的数据( ...
- Django 中的select_related函数优化查询
参考链接: https://blog.csdn.net/secretx/article/details/43964607 在数据库有外键的时候,使用select_related()和prefech_r ...
- CF1285D Dr. Evil Underscores
挂个链接 Description: 给你 \(n\) 个数 \(a_1,a_2,--,a_n\) ,让你找出一个 \(x\) ,使 \(x\) 分别异或每一个数后得到的 \(n\) 个结果的最大值最小 ...
- 使用注解的形式搭建一个springMVC框架
1.创建SpringMVC的配置文件springmvc-servlet <?xml version="1.0" encoding="UTF-8"?> ...
- 浏览器的HTML页面展示
当你输入一个url链接发生了什么? 下面的图是上篇文章的改造版本 电脑浏览器输入百度 打开台式电脑或者笔记本中的浏览器(IE,谷歌,360等),访问百度http://www.baidu.com,此时发 ...
- Linux-使用之vim编译安装出现的问题
---恢复内容开始--- cd <directory> Short for "change directory". The shorthand name for the ...