poj 2831 次小生成树模板
/*次小生成树
题意:给你一些路径,现在将一部分路径权值减少后问是否可以替代最小生成树里面的边。
解:次小生成树,即将这条边连上,构成一个环
求出任意两点路径之间的除了这条边的最大值,比较这个最大值>=这条边,说明可以替换。
prime算法次小生成树模板
*/
#include<stdio.h>
#include<string.h>
#define N 1100
#define inf 0x3fffffff
int ma[N][N];
int Min(int a,int b) {
return a>b?b:a;
}
int Max(int a,int b) {
return a>b?a:b;
}
struct node {
int u,v,w;
}bian[N*100];
int maxd[N][N],n;
void prime() {
int i,j,dis[N],vis[N],pre[N],stac[N],top=0;
memset(maxd,-1,sizeof(maxd));
for(i=1;i<=n;i++) {//初始化
dis[i]=ma[1][i];
pre[i]=1;
}
stac[top++]=1;//储存最小生成树的点
memset(vis,0,sizeof(vis));
vis[1]=1;
for(i=1;i<n;i++) {
int minn=inf,next=1;
for(j=1;j<=n;j++)
if(!vis[j]&&minn>dis[j]) {//找到最近的
minn=dis[j];
next=j;
}
vis[next]=1;
//printf("%d\n",minn);
for(j=0;j<top;j++)
maxd[next][stac[j]]=maxd[stac[j]][next]=Max(minn,maxd[pre[next]][stac[j]]);//当前点与栈里面的点的最大值为minn和他的父节点与其他点的权值最大值
stac[top++]=next;//加入栈
for(j=1;j<=n;j++)
if(!vis[j]&&dis[j]>ma[next][j]) {//更新距离
pre[j]=next;//与j连接的最近的点即为他的父节点
dis[j]=ma[next][j];
}
}
return ;
}
int main(){
int m,i,j,a,b,c,q;
while(scanf("%d%d%d",&n,&m,&q)!=EOF) {
for(i=1;i<=n;i++) {
ma[i][i]=0;
for(j=i+1;j<=n;j++)
ma[i][j]=ma[j][i]=inf;
}
for(i=0;i<m;i++) {
scanf("%d%d%d",&a,&b,&c);
ma[a][b]=ma[b][a]=Min(ma[a][b],c);//
// printf("%d\n",ma[a][b]);
bian[i+1].u=a;bian[i+1].v=b;
bian[i+1].w=c;
}
prime();
while(q--) {
scanf("%d%d",&a,&b);
// printf("%d\n",maxd[bian[a].u][bian[a].v]);
if(maxd[bian[a].u][bian[a].v]>=b)//比较即可
printf("Yes\n");
else
printf("No\n");
}
}
return 0;
}
poj 2831 次小生成树模板的更多相关文章
- poj1679The Unique MST(次小生成树模板)
次小生成树模板,别忘了判定不存在最小生成树的情况 #include <iostream> #include <cstdio> #include <cstring> ...
- poj 1679 The Unique MST (次小生成树模板题)
Given a connected undirected graph, tell if its minimum spanning tree is unique. Definition 1 (Spann ...
- POJ 1679 The Unique MST 【最小生成树/次小生成树模板】
The Unique MST Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 22668 Accepted: 8038 D ...
- POJ_1679_The Unique MST(次小生成树模板)
The Unique MST Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 23942 Accepted: 8492 D ...
- POJ-1679 The Unique MST,次小生成树模板题
The Unique MST Time Limit: 1000MS Memory Limit: 10000K Description Given a connected undirec ...
- poj 1679 次小生成树
次小生成树的求法: 1.Prime法 定义一个二维数组F[i][j]表示点i到点j在最小生成树中的路径上的最大权值.有个知识就是将一条不在最小生成树中的边Edge加入最小生成树时,树中要去掉的边就是E ...
- The Unique MST POJ - 1679 次小生成树prim
求次小生成树思路: 先把最小生成树求出来 用一个Max[i][j] 数组把 i点到j 点的道路中 权值最大的那个记录下来 used数组记录该条边有没有被最小生成树使用过 把没有使用过的一条边加 ...
- The Unique MST POJ - 1679 (次小生成树)
Given a connected undirected graph, tell if its minimum spanning tree is unique. Definition 1 (Spann ...
- uva10600次小生成树模板题
裸题,上模板就行,注意j ! = k #include<map> #include<set> #include<cmath> #include<queu ...
随机推荐
- 【POJ 3263】 Tallest Cow
[题目链接] http://poj.org/problem?id=3263 [算法] 若A和B两头牛可以互相看见,那么说明中间的牛的高度都至少比它们少1,因此,我们可以引入一个差分数组c 对于每组关系 ...
- AD10 库下载地址
http://wiki.altium.com/display/ADOH/Download+Libraries 最新更新库地址: http://designcontent.live.altium.com ...
- 转载:C语言的字节对齐及#pragma pack的使用
C语言的字节对齐及#pragma pack的使用 C编译器的缺省字节对齐方式(自然对界) 在缺省情况下,C编译器为每一个变量或是数据单元按其自然对界条件分配空间. 在结构中,编译器为结构的每个成员 ...
- MyEclipse个性设置
MyEclipse个性设置 (1)Myeclipse 打开 jsp 的默认编辑器不好,会同时打开预览.所以做如下更改 Windows–>Perferences–>General–>E ...
- glances内存分析工具使用
glances -b 以字节为单位显示网络流量 glances 是一个命令行工具包括如下命令选项:-b:显示网络连接速度 Byte/ 秒-B @IP|host :绑定服务器端 IP 地址或者主机名称- ...
- Android内存管理(11)*常见JVM回收机制「Java进程内存堆分代,JVM分代回收内存,三种垃圾回收器」
参考: http://www.blogjava.net/rosen/archive/2010/05/21/321575.html 1,Java进程内存堆分代: 典型的JVM根据generation(代 ...
- linux如何更改yum源
更改linux yum源方法:第一步:进入yum配置文件目录:cd /etc/yum.repos.d/第二步:备份配置文件(如果后续出现了问题就可以恢复):mv CentOS-Base.repo Ce ...
- DataFrame编程模型初谈与Spark SQL
Spark SQL在Spark内核基础上提供了对结构化数据的处理,在Spark1.3版本中,Spark SQL不仅可以作为分布式的SQL查询引擎,还引入了新的DataFrame编程模型. 在Spark ...
- Hadoop基础(二)
HDFS 读写流程 我们知道在HDFS中我们的文件按数据块进行存储,那么当我们写入或者读取一个文件的时候HDFS到底进行了哪些操作呢? HDFS 写流程 如上图所示,假如我们有一个四个节点的集群,并且 ...
- MVC系列学习(二)-初步了解ORM框架-EF
1.新建 一个控制台项目 2.添加一个数据项 a.选择数据库 注:数据库中的表如下: b.选择EF版本 c.选择表 3.初步了解EF框架 看到了多了一个以 edmx后缀的文件 在edmx文件上,右击打 ...