PAT甲级1013. Battle Over Cities
PAT甲级1013. Battle Over Cities
题意:
将所有城市连接起来的公路在战争中是非常重要的。如果一个城市被敌人占领,所有从这个城市的高速公路都是关闭的。我们必须立即知道,如果我们需要修理任何其他高速公路,以保持其他城市的连接。鉴于所有其余高速公路标记的城市地图,
你应该告诉高速公路需要修理的次数很快。
例如,如果我们有3个城市和2个连接city1-city2和city1-city3的高速公路3。那么如果city1被敌人占领,那么我们必须有1条公路修好,那就是高速公路city2-city3。
输入
每个输入文件包含一个测试用例。
每个案例分别以3号数字N(<1000),M和K分别开始,分别是城市总数,剩余高速公路数和待检查城市数。然后M行跟随,每个描述一条公路由2个整数,这是高速公路连接的城市的数量。
城市的编号从1到N.最后有一行包含K个数字,代表我们关心的城市。
输出
对于每个K个城市,如果该城市丢失,一条线上的公路数量需要修复。
思路:
求连通支路。并查集或者dfs都可以。
ac代码:
C++ 并查集
#include<iostream>
#include<cstdio>
#include<string>
#include<algorithm>
#include<queue>
#include<vector>
#include<unordered_map>
#include<cstring>
using namespace std;
const int maxn = 1005;
int mapx[maxn * maxn][2];
int pre[maxn];
int Find(int x)
{
return pre[x] == x ? x : pre[x] = Find(pre[x]);
}
void Union(int x, int y)
{
x = Find(x);
y = Find(y);
if (x == y) return;
pre[y] = x;
}
int main()
{
int n, m, k, sum;
cin >> n >> m >> k;
memset(mapx, 0, sizeof(mapx));
for (int i = 0; i < m; i++)
{
cin >> mapx[i][0] >> mapx[i][1];
}
int city;
while (k--)
{
cin >> city;
for (int i = 0; i <= n; i++)
{
pre[i] = i;
}
for (int i = 0; i < m; i++)
{
if (mapx[i][0] != city && mapx[i][1] != city)
Union(mapx[i][0], mapx[i][1]);
}
sum = 0;
for (int i = 1; i <= n; i++)
{
if (pre[i] == i && i != city)
sum++;
}
cout << sum - 1 << endl;
}
return 0;
}
C++ dfs
#include<iostream>
#include<cstdio>
#include<string>
#include<algorithm>
#include<queue>
#include<vector>
#include<unordered_map>
#include<cstring>
using namespace std;
const int maxn = 1005;
int visit[maxn];
int link[maxn][maxn];
int n, m, k;
void dfs(int x)
{
visit[x] = 1;
for (int i = 1; i <= n; i++)
{
if (visit[i] != 1 && link[i][x] == 1)
dfs(i);
}
}
int main()
{
cin >> n >> m >> k;
int city1, city2;
memset(link, 0, sizeof(link));
for (int i = 0; i < m; i++)
{
cin >> city1 >> city2;
link[city1][city2] = 1;
link[city2][city1] = 1;
}
int misscity;
int count;
for (int i = 0; i < k; i++)
{
cin >> misscity;
count = 0;
memset(visit, 0, sizeof(visit));
visit[misscity] = 1;
for (int i = 1; i <= n; i++)
{
if (visit[i] != 1)
{
dfs(i);
count++;
}
}
cout << count - 1 << endl;
}
return 0;
}
PAT甲级1013. Battle Over Cities的更多相关文章
- 图论 - PAT甲级 1013 Battle Over Cities C++
PAT甲级 1013 Battle Over Cities C++ It is vitally important to have all the cities connected by highwa ...
- PAT 甲级 1013 Battle Over Cities (25 分)(图的遍历,统计强连通分量个数,bfs,一遍就ac啦)
1013 Battle Over Cities (25 分) It is vitally important to have all the cities connected by highway ...
- PAT A 1013. Battle Over Cities (25)【并查集】
https://www.patest.cn/contests/pat-a-practise/1013 思路:并查集合并 #include<set> #include<map> ...
- PAT甲级——A1013 Battle Over Cities
It is vitally important to have all the cities connected by highways in a war. If a city is occupied ...
- PAT Advanced 1013 Battle Over Cities (25) [图的遍历,统计连通分量的个数,DFS,BFS,并查集]
题目 It is vitally important to have all the cities connected by highways in a war. If a city is occup ...
- PAT 解题报告 1013. Battle Over Cities (25)
1013. Battle Over Cities (25) t is vitally important to have all the cities connected by highways in ...
- PAT 1013 Battle Over Cities
1013 Battle Over Cities (25 分) It is vitally important to have all the cities connected by highway ...
- PAT 1013 Battle Over Cities(并查集)
1013. Battle Over Cities (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue It ...
- pat 1013 Battle Over Cities(25 分) (并查集)
1013 Battle Over Cities(25 分) It is vitally important to have all the cities connected by highways i ...
随机推荐
- elk系列3之通过json格式采集Nginx日志【转】
转自 elk系列3之通过json格式采集Nginx日志 - 温柔易淡 - 博客园http://www.cnblogs.com/liaojiafa/p/6158245.html preface 公司采用 ...
- ubuntu无法获得锁 /var/lib/dpkg -open 问题
问题: 方法: sudo rm /var/lib/dpkg/lock 然后再安装就可以了
- Python连接Access数据库
前言 今天想要用Python访问Access数据库,折腾了半天,特记录一下 背景 最近想将一些文件记录下来,存入数据库,为此拿LabVIEW写了一个版本,记录环境配置为: LabVIWE:2015 A ...
- WEB-INF下资源访问问题
原文链接:http://blog.csdn.net/u010921701/article/details/67637527 问题描述:建了一个Web工程,将js.css等放到了WEB-INF文件下,发 ...
- SipDroid +miniSIPServer搭建SIP局域网语音通话(一)
最近在做语音通讯功能,参考下优秀开源软件SIPDroid好就这个了,svn check下最新的源代码 http://sipdroid.googlecode.com/svn/trunk/sipdroid ...
- php 面试指南
https://xianyunyh.gitbooks.io/php-interview/
- scrollreveal(页面滚动显示动画插件支持手机)
scrollreveal.js是一款可以轻易实现桌面和移动浏览器元素随页面滚动产生动画的js插件.该插件通过配置可以在页面滚动,元素进入视口时产生炫酷的动画效果,同时还支持元素的3D效果,非常的实用. ...
- Spring mvc知识点总结——面试篇
一.MVC思想MVC(Model-View-Controller)三元组的概念:1.Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数 ...
- Https 请求工具(put,post,get)
package com.util; /** * @Description: 类描述 * @author 作者 ll E-mail:80002132@sf-express.com * @version ...
- Android中由Handler和内部类引起的内存泄漏
原文地址:http://johnnyshieh.github.io/android/2015/09/03/android-handler-memory-leak/ 在Android中我们经常用Hand ...