CodeForces 522A(DFS||floyd最短路)
来源:互联网 发布:java 获取进程id 编辑:程序博客网 时间:2024/04/28 23:12
好久没做题了,好懒呀,被期末折磨死了
题意:题意很简单,给你n个字符串,A采访B,B采访C ,这一条的采访链长度是3,求最长的链。
题解:这一题开始想的是使DFS强行搜出最长链,发现可能会超时,想记忆化搜索但是不会,这时候我想到可以直接求任意间最短路,然后直接输出最长的那条路就是最长的链,好啦就这样把这一题转换为最短路问题。先使用map映射为数字,然后直接Floyd,最后枚举点找最大值就可了。
#include<iostream>#include<cstdio>#include<map>#include<algorithm>#include<string>#include<cstring>#include<vector>using namespace std;#define N 250#define inf 0x3f3f3f3fmap<string,int>Hash;inline void change(string &s){for(int i=0;i<s.length();i++){if(s[i]>='A'&&s[i]<='Z'){s[i]+=('a'-'A');}}}int g[N][N];int main(){#ifdef CDZSCfreopen("i.txt","r",stdin);#endifstring s1,s2,s3;int n;while(~scanf("%d",&n)){memset(g,inf,sizeof(g));Hash.clear();int hs=0;for(int i=0;i<n;i++){cin>>s1>>s2>>s3;change(s1);change(s3);if(!Hash.count(s1)){Hash[s1]=++hs;}if(!Hash.count(s3)){Hash[s3]=++hs;}g[Hash[s1]][Hash[s3]]=1;}for(int k=1;k<=hs;k++){for(int i=1;i<=hs;i++){for(int j=1;j<=hs;j++){g[i][j]=min(g[i][k]+g[k][j],g[i][j]);}}}int ans=-inf;for(int i=1;i<=hs;i++){for(int j=1;j<=hs;j++){if(g[i][j]<inf){ans=max(ans,g[i][j]);}}}printf("%d\n",ans+1);}return 0;}
0 0
- CodeForces 522A(DFS||floyd最短路)
- hdu_4284 (Floyd求最短路+dfs遍历)
- Codeforces 522 A Reposts【最短路】
- codeforces 601A (最短路)
- Codeforces 601A Dijkstra最短路
- poj1125 最短路floyd
- poj1603 Floyd最短路
- poj1125(floyd最短路)
- 最短路-Floyd算法
- 最短路-floyd
- poj_2253 最短路floyd
- 最短路算法(Floyd)
- uva567(最短路 + floyd)
- UVA10803(最短路floyd )
- 最短路-Floyd算法
- HDU1690(Floyd最短路)
- hihocoder1089(Floyd最短路)
- 【最短路】poj1125 Floyd
- IOS开发之——绘图(CGContext)
- selenium WebDriver 对浏览器标签页的切换
- oracle存储过程continue
- Android 干货集
- ORACLE数据库事务隔离级别
- CodeForces 522A(DFS||floyd最短路)
- 12-《电子入门趣谈》第二章_电子电路的神经网络-2.1.3三极管(重点推荐)
- Java注册邮箱激活验证实现代码
- gdb 技巧学习
- 【转】使用ActivityManager的forceStopPackage方法结束进程
- 收藏一些大神博客
- iOS 3DES加密解密(一行代码搞定)
- Error when inflating android.support.design.widget.TextInputLayout
- Android中软键盘弹出时底部菜单上移问题