题目:
小明和小芳出去乡村玩,小明负责开车,小芳来导航。
  小芳将可能的道路分为大道和小道。大道比较好走,每走1公里小明会增加1的疲劳度。小道不好走,如果连续走小道,小明的疲劳值会快速增加,连续走s公里小明会增加s2的疲劳度。
  例如:有5个路口,1号路口到2号路口为小道,2号路口到3号路口为小道,3号路口到4号路口为大道,4号路口到5号路口为小道,相邻路口之间的距离都是2公里。如果小明从1号路口到5号路口,则总疲劳值为(2+2)2+2+22=16+2+4=22。
  现在小芳拿到了地图,请帮助她规划一个开车的路线,使得按这个路线开车小明的疲劳度最小。 输入格式 输入的第一行包含两个整数n,m,分别表示路口的数量和道路的数量。路口由1至n编号,小明需要开车从1号路口到n号路口。接下来m行描述道路,每行包含四个整数t, a, b, c,表示一条类型为t,连接a与b两个路口,长度为c公里的双向道路。其中t为0表示大道,t为1表示小道。保证1号路口和n号路口是连通的。

输出格式
输出一个整数,表示最优路线下小明的疲劳度。

样例输入
6 7
1 1 2 3
1 2 3 2
0 1 3 30
0 3 4 20
0 4 5 30
1 3 5 6
1 5 6 1
样例输出 76
样例说明
从1走小道到2,再走小道到3,疲劳度为52=25;然后从3走大道经过4到达5,疲劳度为20+30=50;最后从5走小道到6,疲劳度为1。总共为76。
数据规模和约定 对于30%的评测用例,1≤n≤8,1≤m≤10;   对于另外20%的评测用例,不存在小道;
对于另外20%的评测用例,所有的小道不相交;   
对于所有评测用例,1≤n≤500,1≤m≤105,1≤a, b≤n,t是0或1,c≤105。保证答案不超过106。

#include <bits/stdc++.h>
#define INF 0x7fffffff
using namespace std;
typedef long long ll;
const int N=505;
struct edge//边的信息
{int type;//边的类型 1:小路 0:大路int to;//边指向的节点ll length;//长度
};
struct vertex//点的信息
{int num;//个点编号ll tired;//疲劳度bool operator <(const vertex &a)const{//疲劳度小的优先return a.tired<tired;}
};
ll d[N];//记录每个节点最短路
ll con_path[N];//记录连续小路长
int vis[N];//记录是否访问过priority_queue<vertex>ver;//利用优先队列实现查找最近节点
vector<edge>g[N];//利用动态数组建图
ll pow_2(ll x)//实现开平方
{return x*x;
}
void dijstra(int n,int m,int s)
{for(int i=1;i<=n;i++)//初始化最短路数组{d[i]=INF;}d[s]=0;//将起点的最短路值标记为0ver.push({s,0});//将起点节点的信息入队while(!ver.empty()){vertex p;p=ver.top();ver.pop();int id=p.num;//距离最近的节点if(vis[id]){continue;}vis[id]=1;for(int i=0;i<g[id].size();i++)//遍历所有相连边{edge minn=g[id][i];if(vis[minn.to]){continue;}if(minn.type==1)//如果为小路{if(d[id]+pow_2(con_path[id]+minn.length)-pow_2(con_path[id])<d[minn.to])//此处注意,连续的小路的平方的处理{d[minn.to]=d[id]+pow_2(con_path[id]+minn.length)-pow_2(con_path[id]);con_path[minn.to]=con_path[id]+minn.length;ver.push({minn.to,d[minn.to]});}}if(minn.type==0)//如果为大路{if(d[id]+minn.length<d[minn.to]){d[minn.to]=d[id]+minn.length;ver.push({minn.to,d[minn.to]});con_path[minn.to]=0;//将连续小路的值置为0}}}}
}int main()
{int n,m;//n:顶点个数,m:边个数edge tmp1,tmp2;int type,from,to,w;cin>>n>>m;for(int i=0;i<m;i++){cin>>type>>from>>to>>w;tmp1.type=type;tmp1.to=to;tmp1.length=w;tmp2.type=type;tmp2.to=from;tmp2.length=w;g[from].push_back(tmp1);g[to].push_back(tmp2);//无向图建图}dijstra(n,m,1);printf("%lld\n",d[n]);return 0;
}
/*
6 7
1 1 2 3
1 2 3 2
0 1 3 30
0 3 4 20
0 4 5 30
1 3 5 6
1 5 6 1
*/

数据结构课设—图型结构题目—行车路线相关推荐

  1. 数据结构课设_网页形式的景区导游

    一.前言 欢迎大家来到这里~~ 1.这次数据结构课设,笔者的题目是网页形式的导航系统. 2.数据结构方面应用了链表存储商品信息.图来存储景点和路径信息.在图的广度优先中还用到了队列: 3.具体的算法有 ...

  2. 模拟浏览器操作程序(数据结构课设)

    文章目录 前言 一.题目 二.系统设计 2.1 功能模块图 2.2 主要功能函数 三.问题分析 四.实验结果及分析 五.源码 总结 前言 20级cqut的别抄! 一.题目  模拟浏览器操作程序:标准的 ...

  3. 背包问题求解(数据结构课设)

    文章目录 前言 一.题目 二.功能模块图 三.问题分析 四.实验结果及分析 五.源码 总结 前言 20级cqut的别抄! 一.题目  背包问题的求解:假设有一个能装入总体积为T的背包和n件体积分别为w ...

  4. 地大c语言课程设计题目,中国地质大学数据结构课设-全国铁路运输网最佳经由问题课程设计报告精选.doc...

    中国地质大学数据结构课设-全国铁路运输网最佳经由问题课程设计报告精选 数据结构 上机实习报告 实验题目:全国铁路运输网最佳经由问题 班级: 姓名: 学号: 完成日期:2017年4月25日 目录 课程设 ...

  5. 神秘国度的爱情故事 数据结构课设-广州大学

    神秘国度的爱情故事 数据结构课设-广州大学 ps:本次课设程序不仅需要解决问题,更需要注重代码和算法的优化和数据测试分析      直接广度优先实现的方法时间复杂度为O(QN),优化后的方法是lca+ ...

  6. 《数据结构课设》弗洛伊德算法设计校园导游系统

    大二上学期的数据结构课设分享一下,具体题目如下: 题目27:"校园导游系统"的设计与实现 1.问题描述 设计一个校园导游系统,为来访的客人提供信息查询服务. 2.基本要求 (1)从 ...

  7. 南京航空航天大学2020数据结构课设

    南京航空航天大学2020数据结构课设 目录 1.系统进程设计 2.迷宫问题 3.家谱管理系统 4.Huffman编码与解码 5.地铁修建 6.公交线路提示 7.B-树应用 8.排序算法比较 9.数字排 ...

  8. 学生搭配问题数据结构报告c语言,数据结构课设学生搭配问题

    数据结构课设学生搭配问题 数 据 结 构 课程设计报告书 班级 学号 专业 姓名 课题描述: 一. 需求分析: 1. 设计内容 一班有m个女生,有n个男生(m不等于n),现要开一个舞会. 男女生分别编 ...

  9. 数据结构课设+校园导航系统+西安邮电大学

    数据结构课设+校园导航系统+西安邮电大学 设计目的:在校园建设不断完善的现在,为在校学生提供合适的行走路径,为来访的客人提供各种服务的信息:对于这些问题,可用图结构来表示校园交通网络,编写程序完成校园 ...

最新文章

  1. 解决应用程序配置不正确,程序无法启动
  2. 2009年总结-爱与快乐着
  3. 神州数码成为华为数通产物总代理
  4. 混合图 (Standard IO)
  5. 新5 年时间服务器从 0 到 200,一个创业公司的架构野蛮生长史头疼哈
  6. STL容器汇总(二)
  7. Error:unsupported class file version 52.0问题的解决
  8. 【android】java.net.ConnectException: localhost/127.0.0.1:8080 - Connection refused
  9. Mysql+Heartbeat+Drbd生产环境高可用部署若干问题解惑
  10. JWT实现Token认证
  11. 笔记本启动关闭小键盘NUM LOCK的N种方法
  12. 将不确定变为确定~Linq to SQL不能随机排序吗?
  13. Android SDK Setup如何使用?
  14. JAVA基础之变量(数据类型及其转换)
  15. 小爱同学app安卓版_小爱同学APK提取版-小爱同学APP最新版下载5.15.10安卓版-玩友游戏网...
  16. FPGA——按键消抖
  17. vcpkg:If you are sure you want to rebuild the above packages, run the command with the --recurse opt
  18. Web开发工程师的就业前景
  19. 使用unity3d 接入anySDK的总结2
  20. 开源代码学习之persepolis【一】

热门文章

  1. 大学计算机基础第三版重要知识点,大一大学计算机基础课程知识点
  2. configure配置安装详解
  3. 解决IIS+PHP出现的“500 - 内部服务器错误”
  4. 指令系统 —— 指令格式
  5. 搜索引擎:高级搜索技巧(初)
  6. 百度地图标记点中添加echarts图表
  7. T-SNE可视化高维数据,亮瞎审稿人
  8. 【个人小程序和企业小程序的区别】
  9. Matplotlib画折线图
  10. FreeType 用法