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

知名跟单网站做信号提供方网上营销网站

知名跟单网站做信号提供方,网上营销网站,怎样做金融理财网站,连云港做网站制作一、题目大意 我们有n个点,p条边,最小化从1到n之间的路径的第k1大的数(当路径不超过k时就是0) 二、解题思路 我们首先用dijkstra过一遍,判断从1能不能到n,不能直接输出-1结束。 1能到达n的话&#xff0…

一、题目大意

我们有n个点,p条边,最小化从1到n之间的路径的第k+1大的数(当路径不超过k时就是0)

二、解题思路

我们首先用dijkstra过一遍,判断从1能不能到n,不能直接输出-1结束。

1能到达n的话,就对二分第k+1大的边进行二分,left选-1,right选最大的边的长度+1(这里我left一开始选取的时最小边-1,后来发现当k比较大时结果可能是0)

二分的依据如下

设二分的值为mid
记录从1到n的路径中必走的大于mid的值的数量
如果超过了k,那么放大mid
如果小于等于k,那么缩小mid,同时记录这样不断循环,直到找到一个临界值limit
当mid=limit时,大于mid的边小于等于k个
当mid=limit-1时,大于mid的边超过k个
那么limit一定就是第k+1大的边输出最后一个(大于mid的边数小于等于k的)mid即可

三、代码

#include <iostream>
#include <algorithm>
#include <queue>
#include <vector>
using namespace std;
typedef pair<int, int> P;
vector<P> edges[1007];
bool used[1007];
int n, p, k, d[1007], inf = 0x3f3f3f3f, maxt = 0;
void input()
{int from, to, cost;scanf("%d%d%d", &n, &p, &k);for (int i = 0; i < p; i++){scanf("%d%d%d", &from, &to, &cost);edges[from - 1].push_back(P(cost, to - 1));edges[to - 1].push_back(P(cost, from - 1));maxt = max(cost, maxt);}
}
bool judgeByDijkstra(int mid)
{for (int i = 0; i < n; i++){d[i] = inf;used[i] = false;}d[0] = 0;priority_queue<P, vector<P>, greater<P>> que;que.push(P(d[0], 0));while (!que.empty()){P current = que.top();que.pop();if (used[current.second] || current.first > d[current.second]){continue;}used[current.second] = true;for (int i = 0; i < edges[current.second].size(); i++){P toEdge = edges[current.second][i];int relativeEdge = toEdge.first > mid ? 1 : 0;if (d[current.second] + relativeEdge < d[toEdge.second]){d[toEdge.second] = d[current.second] + relativeEdge;que.push(P(d[toEdge.second], toEdge.second));}}}return d[n - 1] <= k;
}
void binarySearch()
{int left = -1, right = maxt + 1;while (left + 1 < right){int mid = (left + right) / 2;if (judgeByDijkstra(mid)){right = mid;}else{left = mid;}}printf("%d\n", right);
}
bool judgeIfCanGet()
{for (int i = 0; i < n; i++){d[i] = inf;used[i] = false;}d[0] = 0;priority_queue<P, vector<P>, greater<P>> que;que.push(P(d[0], 0));while (!que.empty()){P current = que.top();que.pop();if (used[current.second] || current.first > d[current.second]){continue;}used[current.second] = true;for (int i = 0; i < edges[current.second].size(); i++){P toEdge = edges[current.second][i];if (d[current.second] + toEdge.first < d[toEdge.second]){d[toEdge.second] = d[current.second] + toEdge.first;que.push(P(d[toEdge.second], toEdge.second));}}}return d[n - 1] != inf;
}
int main()
{input();if (!judgeIfCanGet()){printf("-1\n");}else{binarySearch();}return 0;
}

http://www.zhongyajixie.com/news/57732.html

相关文章:

  • 网站首页二级下拉框怎么做网站子域名查询
  • 常青花园做网站的公司国外免费网站域名服务器
  • 网站程序代码优化手机百度免费下载
  • 彩票网站制作开发网络营销文案实例
  • 东莞营销网站建设价格优化工具箱下载
  • 学做视频t的网站上海高玩seo
  • 找做网站的公司潍坊今日头条新闻
  • 闵行虹桥网站建设百度图片搜索引擎入口
  • 网站分站是怎么做的推广引流的10个渠道
  • 网站建设阿里云永久免费linux服务器
  • 网站建设需要提供的资料文档百度快照怎么删除
  • o2o信息类平台有哪些西安seo高手
  • 做网站电话沧州东莞seo外包
  • 无锡营销型网站武汉seo收费
  • 网站内容管理系统怎么用网站推广的几种方法
  • 上海最专业的网站建设公司哪家好网站建设免费网站
  • 网站开发大概多少钱网站流量
  • 电子书网站开发旺道seo推广系统怎么收费
  • 深圳php网站开发制作网站教学
  • 企业建站有哪些步骤福建省人民政府
  • 公司网站域名无法解析济南百度代理
  • 做网站接私活怎么收费体验营销
  • 网页打不开但是能上网临沂seo代理商
  • 广西柳州网站建设北京网站建设公司
  • 做微网站公司名称自助建站工具
  • 广州seo网站排名优化怎样和政府交换友链
  • 推客易可以做自己的网站吗新站优化案例
  • 网络营销网站建设公司全国疫情最新报告
  • 网站dede后台百度网站认证
  • 没有网站的域名海淀区seo引擎优化