最短路坑题——贝西回家 uscow2.2.4
来源:互联网 发布:ws小世界网络模型 编辑:程序博客网 时间:2024/06/06 12:47
这道题坑点太多了:
1. 一共有51个牧场,而不是25个;
2.两个牧场之间可能有多条路,要取最短的一条;
3.这是无向图;
4.字符的输入比较坑爹。
代码如下:
#include<cstdio>#include<iostream>#include<vector>const int inf=100000;using namespace std;vector<int>cow; //记下有牛的牧场 int m,n,x,y,dist[105],map[105][105],vis[105];void input(){int i,t,x,y,w,j;char p,q;cin>>n;for(i=1;i<=52;i++) for(j=1;j<=52;j++) map[i][j]=inf;for(i=1;i<=2*n;i+=2){scanf("\n%c %c %d",&p,&q,&w);if(p>='A'&&p<'Z'){x=int(p)-65+1+26;cow.push_back(x);}else if(p>90)x=int(p)-'a'+1;else x=52;if(q>='A'&&q<'Z'){ y=int(q)-65+1+26; cow.push_back(y);}else if(q>90)y=int(q)-'a'+1;else y=52;map[x][y]=min(w,map[x][y]);map[y][x]=map[x][y];}}void solve(){ //Floyd算法 int i,k,j,ans,minn=inf; for(k=1;k<=52;k++) for(i=1;i<=52;i++) for(j=1;j<=52;j++) if(map[i][j]>map[i][k]+map[k][j])map[i][j]=map[i][k]+map[k][j];for(i=0;i<cow.size();i++)if(map[cow[i]][52]<minn)minn=map[cow[i]][52],ans=cow[i];printf("%c %d",char('A'+ans-27),minn);}int main(){input();solve();}
0 0
- 最短路坑题——贝西回家 uscow2.2.4
- SSL 1120——【USACO 2.4】回家[最短路]
- hoj 经典最短路 回家
- 【USACO2.4.4】回家 最短路
- hdu 4522湫湫系列故事——过年回家(最短路)
- 最短路 hdu-4522 湫湫系列故事——过年回家
- 【bzoj2834】回家的路 最短路
- 【bzoj2834】【回家的路】【最短路】
- hrbust 1669 回家Ⅱ【二维最短路】
- Codevs 1079 回家 最短路 spfa || dijkstra
- codevs 1079 回家(最短路)
- 最短路—1001
- 最短路—1002
- 最短路—1003
- 最短路—1004
- 最短路—1005
- 最短路—1006
- 最短路—1007
- 开发Rpg maker第一弹
- linux popen函数简单实例
- hdu 2047(递推)
- uva 580
- 【读书笔记】Java 线程
- 最短路坑题——贝西回家 uscow2.2.4
- Linux下常用命令总结
- WinDDK+VS2010驱动环境配置
- MySQL - data exists update else insert
- unity3D学习 1
- js使用cookie保存登陆信息
- Linux:fping主机扫描
- 使用NDK生成native C/C++的可执行程序
- poj1007