按题意枚举每个点,建立缺少该点情况下的最小生成树,取权值最大的~

#include<bits/stdc++.h>
using namespace std;
const int maxn=;
const int inf=1e9;
int g[maxn][maxn];
int visit[maxn];
int d[maxn];
int N,M,x,y;
int flag;
int prim (int s) {
fill (d,d+maxn,inf);
d[s]=;
int ans=;
for (int i=;i<=N-;i++) {
int u=-,min=inf;
for (int j=;j<=N;j++)
if (!visit[j]&&d[j]<min) {
u=j;
min=d[j];
}
if (u==-) return inf;
visit[u]=;
ans+=d[u];
for (int v=;v<=N;v++)
if (!visit[v]&&g[u][v]!=inf&&g[u][v]<d[v]) d[v]=g[u][v];
}
return ans;
}
int main () {
scanf ("%d %d",&N,&M);
for (int i=;i<=N;i++)
for (int j=;j<=N;j++)
g[i][j]=inf;
for (int i=;i<M;i++) {
scanf ("%d %d",&x,&y);
scanf ("%d %d",&g[x][y],&flag);
if (flag==) g[x][y]=;
g[y][x]=g[x][y];
}
vector<int> vi;
int Max=-;
for (int i=;i<=N;i++) {
fill (visit,visit+maxn,);
visit[i]=;
int j=i<N?i+:;
int mst=prim(j);
if (mst>Max) {
vi.clear();
vi.push_back(i);
Max=mst;
}
else if (mst==Max) {
vi.push_back(i);
}
}
if (Max==) {
printf ("");
return ;
}
for (int i=;i<vi.size();i++) {
if (i!=) printf (" ");
printf ("%d",vi[i]);
}
return ;
}

PAT T1001 Battle Over Cities-Hard Version的更多相关文章

  1. PAT-Top1001. Battle Over Cities - Hard Version (35)

    在敌人占领之前由城市和公路构成的图是连通图.在敌人占领某个城市之后所有通往这个城市的公路就会被破坏,接下来可能需要修复一些其他被毁坏的公路使得剩下的城市能够互通.修复的代价越大,意味着这个城市越重要. ...

  2. PAT 1013 Battle Over Cities

    1013 Battle Over Cities (25 分)   It is vitally important to have all the cities connected by highway ...

  3. PAT 1013 Battle Over Cities(并查集)

    1013. Battle Over Cities (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue It ...

  4. pat 1013 Battle Over Cities(25 分) (并查集)

    1013 Battle Over Cities(25 分) It is vitally important to have all the cities connected by highways i ...

  5. PAT 1013 Battle Over Cities (dfs求连通分量)

    It is vitally important to have all the cities connected by highways in a war. If a city is occupied ...

  6. PAT A1013 Battle Over Cities (25 分)——图遍历,联通块个数

    It is vitally important to have all the cities connected by highways in a war. If a city is occupied ...

  7. PAT 1013 Battle Over Cities DFS深搜

    It is vitally important to have all the cities connected by highways in a war. If a city is occupied ...

  8. pat1001. Battle Over Cities - Hard Version 解题报告

    /**题目:删去一个点,然后求出需要增加最小代价的边集合生成连通图思路:prim+最小堆1.之前图中未破坏的边必用,从而把两两之间可互达的点集合 合并成一个点2.求出不同点集合的最短距离,用prim+ ...

  9. 「日常训练」Battle Over Cities - Hard Version(PAT-TOP-1001)

    题意与分析 题意真的很简单,实在不想讲了,简单说下做法吧. 枚举删除每个点,然后求最小生成树,如果这个路已经存在那么边权就是0,否则按照原来的处理,之后求花费,然后判整个图是否联通(并查集有几个roo ...

随机推荐

  1. Boxes and Candies

    问题 G: Boxes and Candies 时间限制: 1 Sec  内存限制: 128 MB[提交] [状态] 题目描述 There are N boxes arranged in a row. ...

  2. 发现一个比较好玩的,git的仓库可以转换

    我们通过 git clone 下载一个仓库到本地, 1.这个本地的文件夹名字可以随便改. 2.如果你把本地仓库的全部文件,剪切到另一个文件夹内,这个新的文件夹就是git的本地仓库.

  3. 安装rpm包时提示错误:依赖检测失败的解决方法

    安装rpm包时提示错误:依赖检测失败 解决方法: 命令末尾加上--nodeps --force

  4. shell脚本自学之路

    阿里云大学教学https://edu.aliyun.com/course/155/ 运行 chmod +x xx.sh ./xx.sh 基本语法:echo  输出  $赋值 特殊变量: $* 变量的使 ...

  5. Spring Boot 框架 - 快速创建Spring Boot应用

    使用Spring的项目创建向导创建一个Spring Boot项目 创建完成目录 目录文件说明: 主启动程序已生成 resources文件夹中目录结构 static:保存所有的静态资源,例如js,css ...

  6. STM32F030 启用内部晶振并配置系统时钟为48M

    在文件 system_stm32f0xx.c 里的函数 static void SetSysClock(void) { if (HSEStatus == (uint32_t)0x01) // 存在外部 ...

  7. 日期相关类data,simpledataformat类

    (1) (2)

  8. JupyterLab远程访问配置方法(CentOS7)

    下载 Anaconda3安装包,并执行安装命令: bash Anaconda3-2019.07-Linux-x86_64.sh 确定安装并初始化: Do you wish the installer ...

  9. 关于overflow:hidden的作用(溢出隐藏,清除浮动,解决外边塌陷等等)

    1.overflow:hidden  溢出隐藏 给一个元素中设置overflow:hidden ,那么该元素的内容若超出了给定的宽度和高度属性,那么超出的部分将会被隐藏,不占位. 代码如下: 运行结果 ...

  10. 大数据计算引擎之Flink Flink CEP复杂事件编程

    原文地址: 大数据计算引擎之Flink Flink CEP复杂事件编程 复杂事件编程(CEP)是一种基于流处理的技术,将系统数据看作不同类型的事件,通过分析事件之间的关系,建立不同的时事件系序列库,并 ...