pat1013Battle Over Cities (25)
2015-10-02 20:27
316 查看
题意分析:
(1)根据城市以及相互之间的道路分布地图,求出当其中一个城市被占领后(切断所有与其他城市连接的道路),让这个图中剩下的连通分量连接起来所需修的最少的道路数。
(2)求连通分量宜采用深度优先遍历
可能坑点:
(1)在计算道路被切断的时候,图中有多少个连通分量(极大联通子图)的个数时,不要忘记被占领的城市也是一个连通分量,这个连通分量要去掉。因此最后的结果是连通分量数-1-1
(1)根据城市以及相互之间的道路分布地图,求出当其中一个城市被占领后(切断所有与其他城市连接的道路),让这个图中剩下的连通分量连接起来所需修的最少的道路数。
(2)求连通分量宜采用深度优先遍历
可能坑点:
(1)在计算道路被切断的时候,图中有多少个连通分量(极大联通子图)的个数时,不要忘记被占领的城市也是一个连通分量,这个连通分量要去掉。因此最后的结果是连通分量数-1-1
#include <iostream> #include <string.h> using namespace std; int visit[1001]={0}; int map[1001][1001]={0}; int N,M,K; void DFS(int start,int check) { if(start==check)return; visit[start]=1; for(int i=1;i<=N;i++) { if(map[start][i]&&!visit[i]&&i!=check) { DFS(i,check); } } } int main() { cin>>N>>M>>K; int i=0; int from,to; while(i<M) { cin>>from>>to; map[from][to]=1; map[to][from]=1; i++; } int j=0; int check; int connected=0; while(j<K) { cin>>check; for(int k=1;k<=N;k++) { if(visit[k]==0) { connected++; DFS(k,check); } } cout<<connected-2<<endl; connected=0; memset(visit,0,sizeof(visit)); j++; } return 0; }
相关文章推荐
- 每日三个笑话-20151002
- ./configure 出现package was not found问题的解决办法
- String
- Java学习笔记----参数传递
- 毛泽东体育文化:文明其精神,野蛮其体魄
- 学习新技术的10个建议
- LeetCode(52) N-Queens II
- LeetCode(52) N-Queens II
- 值得程序员和设计师关注的微信公众号
- [No00000C]Word快捷键大全 Word2013/2010/2007/2003常用快捷键大全
- Android之 左右滑动菜单
- 确定字符互异
- jvm内存模型
- 矩阵快速幂基本思想
- DP:Multiplication Puzzle(POJ 1651)
- [codevs2171]棋盘覆盖
- lintcode——合并两个排序链表
- LeetCode算法第7篇:235 Lowest Common Ancestor of a Binary Search Tree
- ”函数指针”作为“函数参数”传送时的格式
- HDU 4565 So Easy!(共轭复数 + 矩阵快速幂 数论)