最少换乘 之简化版

将题目中要的   需要换的车数   换成  需要走的站数

下面附上 本人的 渣渣代码

 1 /*主要是因为  这个题按照要求写不出来  就先写了个这  等等补上  完整的*/
 2 // 我的思路就是 用  vector去构建出来一个  有向图  然后开始广搜
 3 #include<stdio.h>
 4 #include<vector>
 5 #include<queue>
 6 #include<string.h>
 7 using namespace std;
 8 struct station
 9 {
10     int step,n;
11 }e;
12 vector<int>v[505];   //   用于 构造 单向图
13 queue<station>Q;        //  用于储存公交站
14 int visited[505],mark,count,c;
15 void map(int n)    // 开始构图
16 {
17     int q,i,j,a,b;  //  多弄几个标记变量
18     a=b=0;
19     char str[2000];
20     for(i=0;i<n;i++)
21     {
22         gets(str);     //  开始 每一 行 收 集信息
23         c=strlen(str);
24         for(q=j=0;j<c;q++,j++)
25         {
26             while(str[j]!=‘ ‘&&j<c)  //  如果不是空格的话 就可以出去了
27             {
28                 a+=(str[j]-‘0‘);  //
29                 j++;
30             }
31             if(q!=0)  //   如果这是 第一次进来
32             {
33                 v[b].push_back(a);      //   不是第一次进来 上一次算出来的值  给了b ,这次的值是  a  这样就是  b 可以到a 但是   a  不能到 b   形成了单程路线
34             }
35             b=a;
36             a=0;
37         }
38     }
39 }
40 void BFS(int n,int m)//  上面   map已经完成了 构图的 重任  下面就轮到 搜索了  再熟悉一下深搜和广搜的 区别
41 {                               //   在这里 要得就是最短路 所以直接去进行广搜 就对了
42     station q;
43     int i;
44     q.step=0;
45     q.n=n;
46     Q.push(q);
47     while(!Q.empty())
48     {
49         station q1;
50         q1=Q.front();
51         for(i=0;i<v[q1.n].size()&&!visited[q1.n];i++)  //  将可以从 n1  到达的 地方一个一个的压进去   已经做过大本营的 标记一下不再 做
52         {
53             station q;
54             q.n=v[q1.n][i];
55             q.step=q1.step+1;
56             Q.push(q);
57         }
58         visited[q1.n]=1;
59         Q.pop();
60         if(q1.n==m)
61         {
62             mark=q1.step;
63         }
64         if(mark!=0)
65             break; ;
66     }
67     while(!Q.empty())
68         Q.pop();
69 }
70 int main()
71 {
72     int t,n,m;
73     scanf("%d",&t);
74     while(t--)
75     {
76         memset(visited,0,sizeof(visited));
77         memset(v,0,sizeof(v));
78         scanf("%d%d",&n,&m);
79         getchar();
80         map(n);
81         BFS(1,m);   //从第一站 开始
82         if(mark!=0)
83             printf("%d\n",mark-1);
84         else
85             printf("NO\n");
86         mark=0;
87     }
88     return 0;
89 }
时间: 2024-12-21 16:59:23

最少换乘 之简化版的相关文章

nyoj 1238 最少换乘 (河南省第八届acm程序设计大赛)

题目1238 题目信息 运行结果 本题排行 讨论区 最少换乘 时间限制:2000 ms  |  内存限制:65535 KB 难度:3 描述 欧洲某城是一个著名的旅游胜地,每年都有成千上万的人前来观光旅行.Dr. Kong决定利用暑假好好游览一番.. 年轻人旅游不怕辛苦,不怕劳累,只要费用低就行.但Dr. Kong年过半百,他希望乘坐BUS从住的宾馆到想去游览的景点,期间尽可量地少换乘车. Dr. Kon买了一张旅游地图.他发现,市政部门为了方便游客,在各个旅游景点及宾馆,饭店等地方都设置了一些公

zzuoj 10408: C.最少换乘【最短路dijkstra】

10408: C.最少换乘 Time Limit: 2 Sec  Memory Limit: 128 MBSubmit: 31  Solved: 8[Submit][Status][Web Board] Description 欧洲某城是一个著名的旅游胜地,每年都有成千上万的人前来观光旅行.Dr. Kong决定利用暑假好好游览一番.. 年轻人旅游不怕辛苦,不怕劳累,只要费用低就行.但Dr. Kong年过半百,他希望乘坐BUS从住的宾馆到想去游览的景点,期间尽可量地少换乘车. Dr. Kon买了一

最少换乘 第八届

最少换乘 时间限制:2000 ms  |  内存限制:65535 KB 难度:3 描述 欧洲某城是一个著名的旅游胜地,每年都有成千上万的人前来观光旅行.Dr. Kong决定利用暑假好好游览一番.. 年轻人旅游不怕辛苦,不怕劳累,只要费用低就行.但Dr. Kong年过半百,他希望乘坐BUS从住的宾馆到想去游览的景点,期间尽可量地少换乘车. Dr. Kon买了一张旅游地图.他发现,市政部门为了方便游客,在各个旅游景点及宾馆,饭店等地方都设置了一些公交站并开通了一些单程线路.每条单程线路从某个公交站出

最少换乘

Description 欧洲某城是一个著名的旅游胜地,每年都有成千上万的人前来观光旅行.Dr. Kong决定利用暑假好好游览一番.. 年轻人旅游不怕辛苦,不怕劳累,只要费用低就行.但Dr. Kong年过半百,他希望乘坐BUS从住的宾馆到想去游览的景点,期间尽可量地少换乘车. Dr. Kon买了一张旅游地图.他发现,市政部门为了方便游客,在各个旅游景点及宾馆,饭店等地方都设置了一些公交站并开通了一些单程线路.每条单程线路从某个公交站出发,依次途经若干个站,最终到达终点站. 但遗憾的是,从他住的宾馆

zzuoj10408--最少换乘(***最短路***)

10408: C.最少换乘 Time Limit: 2 Sec  Memory Limit: 128 MBSubmit: 38  Solved: 10[Submit][Status][Web Board] Description 欧洲某城是一个著名的旅游胜地,每年都有成千上万的人前来观光旅行.Dr. Kong决定利用暑假好好游览一番.. 年轻人旅游不怕辛苦,不怕劳累,只要费用低就行.但Dr. Kong年过半百,他希望乘坐BUS从住的宾馆到想去游览的景点,期间尽可量地少换乘车. Dr. Kon买了

数据结构实验3(飞机最少环城次数问题)

使用图算法解决应用问题: 设有n个城市, 编号为0 ~ n - 1, m条航线的起点和终点由用户输入提供. 寻找一条换乘次数最少的线路方案. 使用有向图表示城市间的航线, 只要两城市之间有航班, 则图中这两点间存在一条权为1的边. 用Dijkstra算法实现求最少换乘次数. 在MGraph类中增加Choose函数以及Dijkstra函数即可. 实现代码: #include "iostream" #include "cstdio" #include "cst

结对项目博客

组员:14061216 陈鸿超 1406        程富瑞 一.结对编程分析 照片: 结对编程的优缺点: 优点: 毫无疑问,两个人在一起解决一个问题想法更多.比如这次作业站点坐标的确定,之前一个人的时候,想法是手输或者写个算法自动计算,当然这个算法就会很难,不一定做的出来.而两个人在一起商讨时,他突然找到了一张北京站点的经纬表,看到这个我就想到了找一个站点做为中心点(0,0),再找两个最远站点,这样根据他们三个就可以换算出所有站点的坐标.很准确,而且最重要的是简单多了. 分配好任务之后,每个

Android应用中使用百度地图API之POI(三)

先看执行后的图吧: POI(Point of Interest).中文能够翻译为"兴趣点".在地理信息系统中.一个POI能够是一栋房子.一个商铺.一个邮筒.一个公交站等  具体:http://developer.baidu.com/map/sdkandev-4.htm 主要应用 MKSearch 类: com.baidu.mapapi.search 类 MKSearch java.lang.Object com.baidu.mapapi.search.MKSearch public c

个人项目-地铁出行线路规划程序

PSP表格 PSP 2.1 Personal Software Process Stages Planning Time(H) Used Time(H) Planning 计划 0.5 0.25 · Estimate · 估计这个任务需要多少时间 0.5 0.25 Development 开发 25.5 45.9 · Analysis · 需求分析 (包括学习新技术) 10 13 · Design Spec · 生成设计文档 2 3 · Design Review · 设计复审 (和同事审核设计