NOIP2013Day1T3 表示只能过一个点
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
struct node
{
int u;
int v;
int w;
}edge[];
int num=;
int maxn[][];
int f[];
int x,y;
int ans=0x7fffffff;
int cmp(const node &a,const node &b)
{
return a.w>b.w;
}
int find(int x)
{
if(x!=f[x])
f[x]=find(f[x]);
return f[x];
}
void unionn(int x,int y)
{
int fx=find(x);
int fy=find(y);
f[fx]=fy;
}
int vis[];
int n,m;
int flag=;
int dfs(int p)
{
if(p==y)
flag=;
else
{
for(int i=;i<=n;i++)
{
if(vis[i]==&&maxn[p][i]!=0x7fffffff)
{
vis[i]=;
ans=min(ans,maxn[p][i]);
dfs(i);
vis[i]=;
ans=min(ans,maxn[p][i]);
} }
}
//printf("%d",ans);
}
int main()
{ scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)f[i]=i;
for(int i=;i<=m;i++)
{
scanf("%d%d%d",&edge[num].u,&edge[num].v,&edge[num].w);
num++;
}
sort(edge+,edge+num,cmp);
int k=;
for(int i=;i<=num;i++)
{
if(find(edge[i].u)!=find(edge[i].v))
{
unionn(edge[i].u,edge[i].v);
//maxn[edge[i].v]=max(edge[i].w,maxn[edge[i].v]);
//maxn[edge[i].u]=max(edge[i].w,maxn[edge[i].u]);
maxn[edge[i].u][edge[i].v]=max(maxn[edge[i].u][edge[i].v],edge[i].w);
maxn[edge[i].v][edge[i].u]=max(maxn[edge[i].u][edge[i].v],edge[i].w);
k++;
}
if(k==n-)break;
}
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
if(maxn[i][j]==)
maxn[i][j]=0x7fffffff;
}
/*for(int k=1;k<=n;k++)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(maxn[i][k]!=0x7fffffff&&maxn[k][j]!=0x7fffffff)
if(maxn[i][j]>maxn[i][k]+maxn[k][j])
maxn[i][j]=maxn[i][k]+maxn[k][j];
}
}
}*/
int q;
scanf("%d",&q);
for(int i=;i<=q;i++)
{
flag=;
memset(vis,,sizeof(vis));
ans=0x7fffffff;
scanf("%d%d",&x,&y);
dfs(x);
//printf("*******************************\n");
if(ans!=0x7fffffff&&flag==)
printf("%d\n",ans);
else
printf("-1\n");
//printf("*******************************\n");
/*if(maxn[x][y]==0)
printf("-1\n");
else
printf("%d\n",maxn[x][y]);*/
/*for(int j=x;j<=y;j++)
{
if(maxn[j]<maxnnow&&maxn[j]!=0)
maxnnow=maxn[j];
}
if(maxnnow==0x7ffff)printf("-1\n");
else printf("%d\n",maxnnow);*/
}
return ;
}
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
struct node
{
int u;
int v;
int w;
}edge[];
int num=;
int maxn[][];
int f[];
int x,y;
int ans=0x7fffffff;
int cmp(const node &a,const node &b)
{
return a.w>b.w;
}
int find(int x)
{
if(x!=f[x])
f[x]=find(f[x]);
return f[x];
}
void unionn(int x,int y)
{
int fx=find(x);
int fy=find(y);
f[fx]=fy;
}
int vis[];
int n,m;
int flag=;
int dfs(int p)
{
if(p==y)
flag=;
else
{
for(int i=;i<=n;i++)
{
if(vis[i]==&&maxn[p][i]!=0x7fffffff)
{
vis[i]=;
ans=min(ans,maxn[p][i]);
dfs(i);
vis[i]=;
ans=min(ans,maxn[p][i]);
} }
}
//printf("%d",ans);
}
int main()
{ scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)f[i]=i;
for(int i=;i<=m;i++)
{
scanf("%d%d%d",&edge[num].u,&edge[num].v,&edge[num].w);
num++;
}
sort(edge+,edge+num,cmp);
int k=;
for(int i=;i<=num;i++)
{
if(find(edge[i].u)!=find(edge[i].v))
{
unionn(edge[i].u,edge[i].v);
//maxn[edge[i].v]=max(edge[i].w,maxn[edge[i].v]);
//maxn[edge[i].u]=max(edge[i].w,maxn[edge[i].u]);
maxn[edge[i].u][edge[i].v]=max(maxn[edge[i].u][edge[i].v],edge[i].w);
maxn[edge[i].v][edge[i].u]=max(maxn[edge[i].u][edge[i].v],edge[i].w);
k++;
}
if(k==n-)break;
}
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
if(maxn[i][j]==)
maxn[i][j]=0x7fffffff;
}
/*for(int k=1;k<=n;k++)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(maxn[i][k]!=0x7fffffff&&maxn[k][j]!=0x7fffffff)
if(maxn[i][j]>maxn[i][k]+maxn[k][j])
maxn[i][j]=maxn[i][k]+maxn[k][j];
}
}
}*/
int q;
scanf("%d",&q);
for(int i=;i<=q;i++)
{
flag=;
memset(vis,,sizeof(vis));
ans=0x7fffffff;
scanf("%d%d",&x,&y);
dfs(x);
//printf("*******************************\n");
if(ans!=0x7fffffff&&flag==)
printf("%d\n",ans);
else
printf("-1\n");
//printf("*******************************\n");
/*if(maxn[x][y]==0)
printf("-1\n");
else
printf("%d\n",maxn[x][y]);*/
/*for(int j=x;j<=y;j++)
{
if(maxn[j]<maxnnow&&maxn[j]!=0)
maxnnow=maxn[j];
}
if(maxnnow==0x7ffff)printf("-1\n");
else printf("%d\n",maxnnow);*/
}
return ;
}
NOIP2013Day1T3 表示只能过一个点的更多相关文章
- 解决微信授权回调页面域名只能设置一个的问题 [php]
最终的解决方案是:https://github.com/liuyunzhuge/php_weixin_proxy,详细的介绍请往下阅读. 在做项目集成微信登录以及微信支付的时候,都需要进行用户授权.这 ...
- 当没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式。
当没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式.比如 select * from T_Employee where FNumber not in ( select top 5* ...
- 一个java源文件中为什么只能有一个public类。
我们都遇到过一个源文件中有多个java类,但当第一个类使用public修饰时,如果下面还有类使用public修饰,会报错.也就是是说一个java源文件最多只能有一个public类. 当有一个publi ...
- 让powershell同时只能运行一个脚本(进程互斥例子)
powershell,mutex,互斥,进程互斥,脚本互斥 powershell脚本互斥例子,在powershell类别文章中,声明原创唯一. powershell 传教士 原创文章 2016-07- ...
- 怎么取消 Windows Server 2012 r2 RDP 限制每个用户只能进行一个会话(转)
在 Windows Server 2008 / 2008 R2 上,如果希望多个远程用户使用同一个账号同时访问服务器的 Remote Desktop(RDP),只需通过管理工具-远程桌面下的“远程桌面 ...
- 解决微信OAuth2.0网页授权回调域名只能设置一个的问题
https://github.com/HADB/GetWeixinCode GetWeixinCode 解决微信OAuth2.0网页授权回调域名只能设置一个的问题 使用方法 部署get-weixin- ...
- SSAS的维度表之间的关系只能有一个不能有多个
我们在SSAS中创建维度的时候,有时候可能一个维度需要用到多个表的字段作为维度属性,那么这多个表之间势必存在关联关系,但是切记维度表之间的关联关系有且只能有一个不能有多个,下面我们来看一个例子. 现在 ...
- java区分大小写,使用TAB进行缩进,public类名只能有一个,而且文件名与类名保持一致.
java的类必须大写 java区分大小写,使用TAB进行缩进,public类名只能有一个,而且文件名与类名保持一致. 在dos用上下箭头,调用已用过的命令
- 此集合已经采用方案 http 的地址。此集合中每个方案中最多只能包含一个地址。
错误信息:此集合已经采用方案 http 的地址.此集合中每个方案中最多只能包含一个地址.如果服务承载于 IIS 中,则可以通过将“system.serviceModel/serviceHostingE ...
随机推荐
- SM4算法的c++实现
百度到的论文已给出算法. flag为1为解密,flag为0是加密. #include<bits/stdc++.h> using namespace std; typedef long lo ...
- rlwrap:让控制台程序使用input.rc里的设置
习惯了vi模式,在bash里配置input.rc可以使平时命令行操作都使用vi习惯,翻页和跳动光标都很方便 但是当运行一些交互式程序时,比如redis-cli,lua等,它们却不按input.rc的配 ...
- JS中apply和call的用法
JavaScript中有一个call和apply方法,其作用基本相同,但也有略微的区别. 先来看看JS手册中对call的解释: call 方法调用一个对象的一个方法,以另一个对象替换当前对象. cal ...
- jQuery学习1
学习jQuery的过程中发现了一个博客把jquery的要点整理的很不错,摘抄其精华以备学习.感谢:http://blog.csdn.net/wph_1129/article/details/59932 ...
- 快速搭建LAMP
1.安装Apache sudo apt-get install apache2 2.安装Mysql sudo apt-get install mysql-server 中间会出现输入 Mysql 的 ...
- asp.net core 邮件发送
由于core不带smpt 所以借助MimeKit 以163邮箱为例 var message = new MimeMessage ();message.From.Add (new MailboxAddr ...
- 利用css实现鼠标经过元素,下划线由中间向两边展开
代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- 从零开始安装 Ambari (2) -- 准备本地 repository
安装 Ambari,最后是为了用它部署 hadoop 集群.安装时默认使用的是 hortonworks 远程的资源,用它部署集群时,需要下载 Hadoop.Hive.HBase 的安装包,速度很慢.我 ...
- nginx 反向代理及负载均衡
假设我们在 192.168.137.11:8080 上有一个web服务,在 192.168.137.12 配置了一台 nginx,我们可以进行如下配置: location / { proxy_p ...
- Java爬虫系列一:写在开始前
最近在研究Java爬虫,小有收获,打算一边学一边跟大家分享下,在干货开始前想先跟大家啰嗦几句. 一.首先说下为什么要研究Java爬虫 Python已经火了很久了,它功能强大,其中很擅长的一个就是写爬虫 ...