NOI导刊模拟2—电话网络 解题报告

  题目大意:给出一个图,顶点为1到n和一个值k,求出包含顶点1到顶点n的通路的子图中,第k+1大的边最短为多少?(若存在一条从1到n路径边数小于等于k,则返回0,若不存在通路,返回-1)

  思路:一开始我连题都看错了,还以为是动规,汗···

  很显然,此题不好从正面下手,即如果从找到路径下手的话会变得相当棘手,于是想到枚举边,以某一边作为子图中第k+1大的边,看是否是可行解:比它大的边的权值为1,反之为0,用spfa算出1到n的最短路,若路径长大于k则二分查找比m更大的边,反之则查找更小的边,并可用e[0]=0表示权值为零的边(即路径上边数小于k),这样就不难得出正确解了。算法时间为O(nlgn)。

代码如下:

#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("phone.in");
ofstream fout("phone.out");
int graph[1001][1001],matrix[1001][1001];
bool status[10001];
typedef struct
{
int start,end;
int w;
}Bian;
Bian bian[10001];
int d[1001];
int Q[10001];
int partion(Bian *a,int start,int end)
{
int j=start-1;
Bian t;
for(int i=start;i<=end;i++)
{
if(a[i].w<=a[end].w)
{
j++;
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
return j;
}
int quicksort(Bian *a,int start,int end)
{
if(start>=end)
return 0;
int j=partion(a,start,end);
quicksort(a,start,j-1);
quicksort(a,j+1,end);
return 0;
}
int initial(int n)
{
for(int i=0;i<=n;i++)
d[i]=10000000;
return 0;
}
int spfa(Bian *m,int n)
{
initial(n);
d[1]=0;
int head=1,tail=1,t=0,i=0,x=0;
Q[1]=1;
while(((tail+1)000)!=head)
{
t=Q[head];
head++;
head%=10000;
for(i=1;i<=graph[t][0];i++)
{
x=0;
if(matrix[t][graph[t][i]]>m->w)
x=1;
if(d[graph[t][i]]>d[t]+x)
{
d[graph[t][i]]=d[t]+x;
tail++;
Q[tail]=graph[t][i];
tail%=10000;
}
}
}
return d[n];
}
int bins(int n,int p,int start,int end,int k)
{
if((end<0||start>p)||(start>end))
return -1;
int m=(start+end)/2;
if(spfa(&bian[m],n)>k)
return bins(n,p,m+1,end,k);
else
{
int t=bins(n,p,start,m-1,k);
if(t==-1)
return m;
return t;
}
}
int main()
{
ios::sync_with_stdio(0);
int N=0,P=0,K=0,i=0,x=0,y=0,z=0;
fin>>N>>P>>K;
for(i=1;i<=P;i++)
{
fin>>x>>y>>z;
graph[x][0]++;
graph[x][graph[x][0]]=y;
graph[y][0]++;
graph[y][graph[y][0]]=x;
matrix[x][y]=z;
matrix[y][x]=z;
bian[i].start=x;
bian[i].end=y;
bian[i].w=z;
}
quicksort(bian,1,P);
i=bins(N,P,0,P,K);
if(i<0)
fout<<-1<<endl;
else
fout<<bian[i].w<<endl;
return 0;
}

  这道题说明将适当的对象作为枚举对象是重要的思想方法。

转载于:https://www.cnblogs.com/kliner/archive/2012/10/12/noi2008_2_phone.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296513.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

好书推荐 -《国富论》-15-09

好书推荐-《国富论》-15-09.md—/Users/zjh/Documents书籍 《国富论》-亚当斯密-陕西师范大学出版社 推荐理由 《国》是一本非常通俗易懂的经济书籍&#xff0c;用简单的语言讲解从个体&#xff0c;到小型市场&#xff0c;再到国家和政府的经济结构和规律。虽然亚当斯密的一些观…

04Prism WPF 入门实战 - Module

1.概要源码及PPT地址&#xff1a;https://github.com/JusterZhu/wemail视频地址&#xff1a;https://www.bilibili.com/video/BV1KQ4y1C7tg?sharesourcecopywebModule&#xff0c;具有特定功能&#xff0c;且独立存在则称为成为模块。下图为Prism体系中的关系结构图。在Prism体…

虚拟机(VMware Workstation)中,把连接网络的模式由“NAT模式”,改成“自动桥接模式”,网速大大的提升...

安装虚拟机&#xff0c;默认情况下&#xff0c;联网的模式是NAT&#xff0c;即跟主机是转发共用网络资源的&#xff0c;这样就非常慢&#xff0c;时常网页都打不开&#xff0c;现把它改成桥接模式&#xff0c;让它独立成为一台物理机&#xff0c;网速有大大的改善&#xff0c;设…

如何保持纯洁男女关系……

1 倒也没毛病▼2 差点以为是狗子&#xff01;&#xff01;▼3 大哥&#xff1a;我裤子没破&#xff01;▼4 女朋友梦到了啥&#xff1f;&#xff1f;▼5 忍不住了&#xff0c;嘻嘻嘻...&#xff08;via.小风车车&#xff09;▼6 亲爸爸&#xff01;&#xff01;▼7 哈哈哈…

【转】一个关于fork()的笔试题,考了好几遍,终于找到答案了

笔试至少3次见到这个题&#xff0c;都是瞎编的&#xff0c;今天群里有人问&#xff0c;然后有人放出了这个地址&#xff1a;http://coolshell.cn/articles/7965.html&#xff0c;让我恍然大明白&#xff0c;豁然好脾气。 感谢这位陈皓同学&#xff08;名字很熟&#xff0c;不记…

android自定义金额输入键盘_Android 自定义输入支付密码的软键盘实例代码

Android 自定义输入支付密码的软键盘有项目需求需要做一个密码锁功能&#xff0c;还有自己的软键盘&#xff0c;类似与支付宝那种&#xff0c;这里是整理的资料&#xff0c;大家可以看下&#xff0c;如有错误&#xff0c;欢迎留言指正需求&#xff1a;要实现类似支付宝的输入支…

IE6 IE8下背景图片不显示问题

更改background:url()no-repeat; 去掉no-repeat即可解决问题&#xff01;转载于:https://www.cnblogs.com/dream-w/p/4781644.html

C# 选中 DataGridView 控件中的行时显示不同的颜色

可以利用 DataGridView 控件的 SelectionMode、ReadOnly 和 SelectionBackColor 属性实现当选中DataGridView控件中的行时显示不同的颜色。SelectionMode属性用于设置如何选择 DataGridView 的单元格。语法如下:public DataGridViewSelectionMode SelectionMode{get;set;}属性值…

Objective-C( Foundation框架 一 常见的结构体)

常见的结构体 &#xff08;NSPoint&#xff0c;CGPoint&#xff09;、&#xff08;NSRange&#xff0c;CGRange&#xff09;、&#xff08;NSSize&#xff0c;CGSize&#xff09; 苹果官方推荐使用CG开头的结构体 NSRange是Foundation框架中常见的结构体它的定义如下&#xff1…

32岁武汉硕士毕业4年后重新高考,考上本硕需再读8年:“不是一时冲动”

全世界只有3.14 % 的人关注了爆炸吧知识9月5日&#xff0c;程传坤收到了湖北中医药大学的录取通知书。7月8日下午5时10分&#xff0c;32岁的程传坤走出湖北省武汉市新洲一中考点&#xff0c;一脸轻松&#xff0c;拿着准考证特意在新洲一中门前留影。这是他硕士毕业4年后再战高考…

打开本地文件_可以跨软件搜索文件?结构式检索你一定要学会!

面对电脑中日积月累的大量结构式&#xff0c;如何能快速找到自己想要的文件&#xff0c;有时真是一个让人头疼的问题。KingDraw PC版内置的结构式检索功能&#xff0c;可以帮助我们轻松解决这个难题。KingDraw PC版中&#xff0c;我们有两种途径可以检索结构式——右键菜单中检…

C# static readonly 与 const 的区别

static readonly 与 const 的区别&#xff1a; const 表达式的值是在编译时形成的&#xff1b; static readonly 表达式的值直到程序运行时才形成&#xff1b;转载于:https://www.cnblogs.com/xiangfeideshui/archive/2012/10/15/2724260.html

WPF实现雷达图(仿英雄联盟)

WPF开发者QQ群&#xff1a; 340500857 | 微信群 -> 进入公众号主页 加入组织转载 有小伙伴提出需要实现雷达图。 由于在WPF中没有现成的雷达图控件&#xff0c;所以我们自己实现一个。PS&#xff1a;有更好的方式欢迎推荐。01—代码如…

Emoji:搜索将与您找到表情符号背后的故事

眼下。秉已经开始支持emoji搜索&#xff0c;这意味着&#xff0c;你可以插入或粘贴系列emoji表情&#xff0c;让我们的爱、微笑、食品等。。些表情随意组合&#xff0c;必应总会带给你非常多有趣的但却没有不论什么实际用途的搜索结果。这是一项非常新鲜的东西&#xff0c;并且…

python3 2.00gb怎么去掉单位_最值得期待的Python 3.9的新功能

Python 3.9 beta预计下个月就要发布了&#xff0c;那么3.9有那些让我们期待的新功能和变更呢&#xff1f;本我我们一起来说Python 3.9的新功能的。安装测试版为了能够实际探索Python 3.9 的功能&#xff0c;我们需要先下载一个Python 3.9 alpha/beta并安装。wget https://www.p…

TSQL语句中的Like用法

SQL Server&#xff1a;SQL Like 的特殊用法 %&#xff1a;匹配零个及多个任意字符&#xff1b; _&#xff1a;与任意单字符匹配&#xff1b; []&#xff1a;匹配一个范围&#xff1b; [^]&#xff1a;排除一个范围 SymbolMeaninglike 5[%]5%like [_]n_nlike [a-cdf]a, b, c, d…

C++ virtual笔试

一直在赶场&#xff0c;下面是出了N次的题... 当基础看了 #include <iostream> using namespace std; namespace Torxie { // class CFirst { public: void func() { cout<< "CFirst"&l…

这6部超经典的物理电影,居然还有人没有看过?

全世界只有3.14 % 的人关注了爆炸吧知识开篇警告&#xff1a;这是一篇福利文&#xff01;今天小编给热爱物理及数学的小伙伴们&#xff0c;分享6部豆瓣评分8分以上&#xff0c;与数学和物理领域相关的经典电影&#xff0c;帮助大家在工作、学习之余劳逸结合。这些影片除了涉及数…

产品说,我只需要一个有亿点复杂的查询界面

有的时候&#xff0c;你需要动态构建一个比较复杂的查询条件&#xff0c;传入数据库中进行查询。而条件本身可能来自前端请求或者配置文件。那么这个时候&#xff0c;表达式树&#xff0c;就可以帮助到你。本文我们将通过几个简短的示例来了解如何完成这些操作。你也可能接到过…

PostgreSQL忘记输入where条件update更新整张表的解决办法

2019独角兽企业重金招聘Python工程师标准>>> 虽然出现这个错误很挫&#xff0c;但有时候还是会被你或者你的同事碰到。为了避免这个错误&#xff0c;PostgreSQL数据库中可以通过触发器来解决&#xff0c;这里用的是plpgsql 。 1、修改postgresql.conf配置 增加&…