当前位置: 首页 > news >正文

最少换乘 之简化版

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

下面附上 本人的 渣渣代码

 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 }

 

转载于:https://www.cnblogs.com/A-FM/p/5274894.html

相关文章:

  • Nginx(四):LNMMP架构实现Web动静分离
  • JNI 调用,C++ invoke C# dll return to java(见git代码)
  • [1204 寻找子串位置] 解题报告
  • PostgreSQL Analyze分区表:主表与子表的统计信息问题
  • UI初级 Label
  • 深入理解C++中的explicitkeyword
  • 触发JVM进行Full GC的情况及应对策略
  • JQuery ajax方法及参数
  • PHPCMS V9模板制作
  • C++ 继承多态
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • iOS边练边学--通知机制和键盘处理小练习
  • PHP CodeBase: 生成N个不重复的随机数
  • 解析stm32的时钟
  • BZOJ 1001 狼抓兔子 (网络流最小割/平面图的对偶图的最短路)
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • ES6系列(二)变量的解构赋值
  • express.js的介绍及使用
  • input的行数自动增减
  • jdbc就是这么简单
  • magento 货币换算
  • node入门
  • Odoo domain写法及运用
  • PhantomJS 安装
  • ReactNative开发常用的三方模块
  • Sublime Text 2/3 绑定Eclipse快捷键
  • win10下安装mysql5.7
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 关于 Cirru Editor 存储格式
  • 前嗅ForeSpider中数据浏览界面介绍
  • 浅谈web中前端模板引擎的使用
  • 使用SAX解析XML
  • 由插件封装引出的一丢丢思考
  • 转载:[译] 内容加速黑科技趣谈
  • #define用法
  • #微信小程序:微信小程序常见的配置传值
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • (06)金属布线——为半导体注入生命的连接
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (52)只出现一次的数字III
  • (八十八)VFL语言初步 - 实现布局
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (算法)Travel Information Center
  • (一)appium-desktop定位元素原理
  • (转)大道至简,职场上做人做事做管理
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • ******之网络***——物理***
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET Micro Framework初体验(二)
  • .net 程序发生了一个不可捕获的异常
  • .net 流——流的类型体系简单介绍