51Nod 1445 变色DNA
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 如果colormap[i][j]可以变色的话 有一个必须成立的条件那就是1~j-1之间没有‘Y’存在 因为他变色的颜色的标号要尽量小 所以colormap[i][j]变色的代价就是 1~j-1之间‘Y’的数量 之后再跑SPFA求 0~n-1的最短路即可
1 #include <cctype> 2 #include <cstdio> 3 #include <vector> 4 #include <algorithm> 5 6 const int MAXN=60; 7 const int MAXM=1000000; 8 const int INF=0x7fffffff; 9 10 int t,n; 11 12 int dis[MAXN],q[MAXM]; 13 14 bool vis[MAXN]; 15 16 char s[MAXN]; 17 18 std::vector<int> Graph[MAXN]; 19 20 inline void SPFA() { 21 for(int i=1;i<=n;++i) vis[i]=false,dis[i]=INF; 22 int head=0,tail=0; 23 q[++tail]=1; 24 dis[1]=0; 25 while(head<tail) { 26 int u=q[++head]; 27 vis[u]=false; 28 for(int i=0;i<Graph[u].size();++i) { 29 int v=Graph[u][i]; 30 if(dis[v]>dis[u]+i) { 31 dis[v]=dis[u]+i; 32 if(!vis[v]) vis[v]=true,q[++tail]=v; 33 } 34 } 35 } 36 } 37 38 int hh() { 39 scanf("%d",&t); 40 while(t--) { 41 scanf("%d",&n); 42 for(int i=0;i<n;++i) Graph[i].clear(); 43 for(int i=1;i<=n;++i) { 44 scanf("%s",s); 45 for(int j=1;j<=n;++j) 46 if(s[j-1]=='Y') Graph[i].push_back(j); 47 } 48 SPFA(); 49 if(dis[n]==INF) printf("-1\n"); 50 else printf("%d\n",dis[n]); 51 } 52 return 0; 53 } 54 55 int sb=hh(); 56 int main(int aegc,char**argv) {;}
代码
转载于:https://www.cnblogs.com/whistle13326/p/7536283.html
51Nod 1445 变色DNA相关推荐
- 51nod 1445 变色DNA ( Bellman-Ford算法求单源最短路径)
1445 变色DNA 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 有一只特别的狼,它在每个夜晚会进行变色,研究发现它可以变成N种颜色之一,将这些颜色标号为0,1 ...
- bwt比对算法 C语言,DNA比对算法:BWT
DNA比对算法:BWT BWT算法,实质上是前缀树的一种实现.那么什么是前缀树呢? 一.前缀树 对于问题p in S?如果S=rpq,那么p为S前缀rp的一个后缀. 于是,为了判断p in S 是否成 ...
- 51nod图论题解(4级,5级算法题)
51nod图论题解(4级,5级算法题) 1805 小树 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 她发现她的树的点上都有一个标号(从1到n),这些树都在空 ...
- 包含锚点平滑滚动效果/解决锚点链接碰到固定定位问题/导航选中背景变色/固顶/返回顶部效果全...
<script type="text/javascript">$(function() {//锚点平滑滚动效果 $('a[href*=#],area[href*=#]' ...
- 51nod 1617 奇偶数组
传送门 回来看一眼51nod,发现自己掉到rank4了,赶紧切道题回rank3. 一眼不会做,这种东西应该慢慢找规律吧--然后看到数据范围其实比较小,应该是单次log的,那是不是可以分治啊. #inc ...
- php表单偶数变颜色,利用CSS3 nth-child()选择器 实现表格奇偶行变色
nth-child()简介 CSS3的nth-child() 选择器,我之前很少用,在做表格偶数行变色的时候,我通常在绑定的时候,做一个js判断,来加一个css,从而使表格偶数行和奇数行颜色不一样.这 ...
- 区块链技术如何改变我们对DNA的看法
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 试想一下,有人得到了你的一些最私人的信息,并用它来攻击你,窃取你的身份,实施诈骗.这对于你来说特别有压力,对吧?那么,倘 ...
- 使复选框选中_勾选复选框单元格变色,自动计数,在Excel中是如何实现的?
Excel中,我们经常会使用复选框来打勾打叉,这是复选框最基本的功能,相信很多小伙伴都会,但今天我跟大家分享的是复选框的其他操作技巧,勾选复选框变色,统计人数. 下图中,我们要利用复选框是否打钩来确定 ...
- 斯坦福AI 5小时DNA测序破世界纪录!创人类新里程碑,成本仅3万
视学算法报道 编辑:桃子 袁榭 拉燕 [新智元导读]近日,斯坦福大学研究团队把人类DNA测序的时间缩短至5小时2分钟,重新定义了人类基因组测序速度! DNA测序时间减半,还创下了最新吉尼斯世界 ...
最新文章
- mysql查看数据库创建语句_mysql-模糊查找数据库和查看数据库的创建语句
- python3精要(49)-生成器
- C#实现异步消息队列
- python遍历目录树_在Python中遍历目录树的速度要快得多?
- C++容器遍历时删除元素
- New Distinct Substrings(后缀数组)
- LeetCode 546. 移除盒子(DP)*
- Android主题换肤实现
- Python 笔记(一)字典与json使用及注意点
- jQuery最核心的基础设施之一——数据缓存模块进化史
- 删除none 的images报错 image has dependent child images 解决办法
- 抽象代数 04.06可解群和幂零群
- 刚办的电信卡显示无服务器,刚刚买的电信卡怎么不能用说什么只限紧急呼叫
- OJ密码岛 1243.谢尔宾斯基三角形
- 微信小程序二手交易系统ssm框架
- 废旧 Android 手机如何改造成 Linux 服务器
- 基于MDKA5D31-EK_T70开发板的QT示例-demo09:LM75A温度曲线
- 捷径系统智慧健身房管理系统方案
- matlab保存nii_Matlab实现NIfTI(ANALYZE)核磁共振图像读写
- 经典同步时序逻辑电路分析汇总(第六道)(同步四进制可逆加减法计数器)
热门文章
- 樊登讲亲密关系_看了《亲密关系》这本书,原来吵架是牺牲对方来保护自己
- python与线性代数 解线性方程组
- python中a%b_Python中的a+=b和a=a+b之间的区别是什么?
- python 模拟浏览器selenium_使用Selenium模拟浏览器,实现自动爬取数据
- Redis学习总结(14)——图解redis五种数据结构底层实现(动图版)
- 产品经理学习总结(1)——人人都是产品经理之需求文档语法
- 敏捷开发系列学习总结(10)——到底什么是敏捷开发?
- Netty学习总结(4)——图解Netty之Pipeline、channel、Context之间的数据流向
- linux系统克隆安装教程,使用Clonezilla克隆Linux安装的方法
- greenplum配置高可用_0665-6.2.0-如何在CDH中配置HMS高可用