POJ 2831
次小生成树。求出两点间最短路径的最大权值,再把要加入的边与之比较即可。
- #include <iostream>
- #include <cstdio>
- #include <cstring>
- #include <algorithm>
- using namespace std;
- const int MAXN=;
- const int MAXM=;
- const int inf=;
- int map[MAXN][MAXN];
- int edge[MAXM][];
- bool exist[MAXN][MAXN],used[MAXN][MAXN],vis[MAXN];
- int f[MAXN][MAXN],dist[MAXN],pre[MAXN];
- int m,n,q;
- int ans1=;
- void init(){
- for(int i=;i<=n;i++){
- vis[i]=false;
- for(int j=i;j<=n;j++){
- map[i][j]=map[j][i]=inf;
- exist[i][j]=exist[j][i]=used[i][j]=used[j][i]=false;
- f[i][j]=f[j][i]=;
- }
- }
- }
- void prim(){
- dist[]=;
- for(int i=;i<=n;i++){
- dist[i]=map[][i];
- if(dist[i]!=inf)
- pre[i]=;
- else pre[i]=-;
- }
- vis[]=true;
- for(int i=;i<=n;i++){
- int min=inf,p=-;
- for(int k=;k<=n;k++){
- if(dist[k]<min&&!vis[k]){
- min=dist[k]; p=k;
- }
- }
- if(p==-) return ;
- for(int k=;k<=n;k++){
- if(vis[k]){
- f[k][p]=max(f[k][pre[p]],map[pre[p]][p]);
- f[p][k]=f[k][p];
- }
- }
- vis[p]=true;
- for(int k=;k<=n;k++){
- if(!vis[k]&&map[p][k]<dist[k]){
- dist[k]=map[p][k];
- pre[k]=p;
- }
- }
- }
- }
- int main(){
- int u,v,d;
- int c,w;
- while(scanf("%d%d%d",&n,&m,&q)!=EOF){
- init();
- for(int i=;i<=m;i++){
- scanf("%d%d%d",&u,&v,&d);
- edge[i][]=u; edge[i][]=v; edge[i][]=d;
- if(d<map[u][v])
- map[u][v]=map[v][u]=d;
- }
- prim();
- for(int i=;i<=q;i++){
- scanf("%d%d",&c,&w);
- u=edge[c][]; v=edge[c][];
- if(w<=f[u][v])
- printf("Yes\n");
- else printf("No\n");
- }
- }
- return ;
- }
POJ 2831的更多相关文章
- POJ 2831 Can We Build This One:次小生成树【N^2预处理】
题目链接:http://poj.org/problem?id=2831 题意: 给你一个图,每条边有边权. 然后有q组询问(i,x),问你如果将第i条边的边权改为x,这条边是否有可能在新的最小生成树中 ...
- POJ 2831 Can We Build This One?
Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 1728 Accepted: 643 Case Time Limit: 2 ...
- poj 2831 次小生成树模板
/*次小生成树 题意:给你一些路径,现在将一部分路径权值减少后问是否可以替代最小生成树里面的边. 解:次小生成树,即将这条边连上,构成一个环 求出任意两点路径之间的除了这条边的最大值,比较这个最大值& ...
- POJ 3370. Halloween treats 抽屉原理 / 鸽巢原理
Halloween treats Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7644 Accepted: 2798 ...
- POJ 2356. Find a multiple 抽屉原理 / 鸽巢原理
Find a multiple Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7192 Accepted: 3138 ...
- POJ 2965. The Pilots Brothers' refrigerator 枚举or爆搜or分治
The Pilots Brothers' refrigerator Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 22286 ...
- POJ 1753. Flip Game 枚举or爆搜+位压缩,或者高斯消元法
Flip Game Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 37427 Accepted: 16288 Descr ...
- POJ 3254. Corn Fields 状态压缩DP (入门级)
Corn Fields Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 9806 Accepted: 5185 Descr ...
- POJ 2739. Sum of Consecutive Prime Numbers
Sum of Consecutive Prime Numbers Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 20050 ...
随机推荐
- leetcode树相关
目录 144前序遍历 94中序遍历(98验证二叉搜索树.230二叉搜索树中第K小的元素) 145后序遍历 102/107层次遍历(104二叉树最大深度.103 105从前序与中序遍历序列构造二叉树 1 ...
- Coursera Algorithms week1 算法分析 练习测验: 3Sum in quadratic time
题目要求: Design an algorithm for the 3-SUM problem that takes time proportional to n2 in the worst case ...
- Node.js安全清单
前言 安全性,总是一个不可忽视的问题.许多人都承认这点,但是却很少有人真的认真地对待它.所以我们列出了这个清单,让你在将你的应用部署到生产环境来给千万用户使用之前,做一个安全检查. 以下列出的安全项, ...
- PCB 周期计算采用 SQL 函数调用.net Dll 标量函数 实现
PCB 周期计算采用 SQL函数调用.net Dll实现 (实现代码重用目的) 玩过SQL SERVER数据库经常经需要写存储过程,函数之类的,当业务逻辑过于复杂,用SQL去写简直是恶梦, 这里以PC ...
- [Apple开发者帐户帮助]二、管理你的团队(1)邀请团队成员
组织可以选择向其开发团队添加其他人员.如果您已加入Apple开发者计划,您将在App Store Connect中管理团队成员.有关详细信息,请转到在App Store Connect帮助中添加用户. ...
- SpringBoot + MyBatis(注解版),常用的SQL方法
一.新建项目及配置 1.1 新建一个SpringBoot项目,并在pom.xml下加入以下代码 <dependency> <groupId>org.mybatis.spring ...
- [BZOJ1821][JSOI2010]部落划分
感觉学了这么久还是有那么一丢丢进步的...上个学期看到这道题,虽然早就学过并查集和二分了但还是一点思路都没有,现在可以秒切了呢 思路就是二分+并查集,有些人说是生成树,其实它没有变成树,只是运用了生成 ...
- sql 改字段名
sp_rename '[zErpMini].[dbo].[STK_Stock].Isextension','IsExtened'
- Android 微博sdk接入授权指南
1:首先在微博官方注册账号,官方地址是:http://open.weibo.com/然后创建一个新应用. 2:当然我们得现在自己电脑上创建一个应用,例如包名叫com.winorout.weib ...
- android黑科技系列——爆破一款应用的签名验证问题
一.前言 在之前的文章中说过Android中的安全和破解是相辅相成的,为了防止被破解,很多应用做了一些防护策略,但是防护策略也是分等级,一般简单的策略就是混淆代码和签名校验,而对于签名校验很多应用都是 ...