PAT1013. Battle Over Cities(邻接矩阵、邻接表分别dfs)
//采用不同的图存储结构结构邻接矩阵、邻接表分别dfs,我想我是寂寞了吧,应该试试并查集,看见可以用并查集的就用dfs,bfs代替。。。。。。怕了并查集了
//邻接矩阵dfs
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=1001;
int g[maxn][maxn];
int n,tmp;
bool vis[maxn];
void dfs(int v)
{
vis[v]=true;
for(int i=1;i<=n;i++)
{
if(!vis[i]&&g[v][i]>0)dfs(i);
}
}
int dfstra()
{
int i;
fill(vis,vis+maxn,false);
int cnt=0;
for(i=1;i<=n;i++)
if(g[tmp][i]>0)g[tmp][i]=g[i][tmp]=-1;
for( i=1;i<=n;i++)
{
if(!vis[i]&&i!=tmp)
{
dfs(i);
cnt++;
}
}
for(i=1;i<=n;i++)
if(g[tmp][i]<0)g[tmp][i]=g[i][tmp]=1;
return cnt-1;
}
int main()
{
freopen("input.txt","r",stdin);
int i,j,m,k;
while(scanf("%d%d%d",&n,&m,&k)!=EOF)
{
int a,b;
fill(g[0],g[0]+maxn*maxn,0);
for(i=0;i<m;i++)
{
scanf("%d%d",&a,&b);
g[a][b]=g[b][a]=1;
}
for(i=0;i<k;i++)
{
scanf("%d",&tmp);
printf("%d\n",dfstra());
}
}
return 0;
}
//邻接表dfs
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
const int maxn=1001;
vector<int >g[maxn];
bool vis[maxn];
int n,cur;
void dfs(int v)
{
vis[v]=true;
for(int i=0;i<g[v].size();i++)
{
int t=g[v][i];
if(!vis[t]&&t!=cur)dfs(t);
}
}
int dfstra()
{
int i;
fill(vis,vis+maxn,false);
int cnt=0;
for( i=1;i<=n;i++)
{
if(!vis[i]&&i!=cur)
{
dfs(i);
cnt++;
}
}
return cnt-1;
}
int main()
{
freopen("input.txt","r",stdin);
int i,j,m,k;
while(scanf("%d%d%d",&n,&m,&k)!=EOF)
{
int a,b;
for(i=0;i<m;i++)
{
scanf("%d%d",&a,&b);
g[a].push_back(b);
g[b].push_back(a);
}
for(i=0;i<k;i++)
{
scanf("%d",&cur);
printf("%d\n",dfstra());
}
}
return 0;
}
PAT1013. Battle Over Cities(邻接矩阵、邻接表分别dfs)的更多相关文章
- 数据结构学习笔记05图 (邻接矩阵 邻接表-->BFS DFS、最短路径)
数据结构之图 图(Graph) 包含 一组顶点:通常用V (Vertex) 表示顶点集合 一组边:通常用E (Edge) 表示边的集合 边是顶点对:(v, w) ∈E ,其中v, w ∈ V 有向边& ...
- 图的全部实现(邻接矩阵 邻接表 BFS DFS 最小生成树 最短路径等)
1 /** 2 * C: Dijkstra算法获取最短路径(邻接矩阵) 3 * 6 */ 7 8 #include <stdio.h> 9 #include <stdlib.h> ...
- HDU 1874 畅通工程续(最短路/spfa Dijkstra 邻接矩阵+邻接表)
题目链接: 传送门 畅通工程续 Time Limit: 1000MS Memory Limit: 65536K Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路. ...
- <图论入门>邻接矩阵+邻接表
非本人允许请勿转载. 趁热打铁,学会了邻接表把这个总结一下,以及感谢大佬uncle-lu!!!(奶一波)祝早日进队! 首先,图论入门就得是非常基础的东西,先考虑怎么把这个图读进去. 给定一个无向图,如 ...
- hdu 1874 畅通工程(spfa 邻接矩阵 邻接表)
题目链接 畅通工程,可以用dijkstra算法实现. 听说spfa很好用,来水一发 邻接矩阵实现: #include <stdio.h> #include <algorithm> ...
- 第6章 图的学习总结(邻接矩阵&邻接表)
我觉得图这一章的学习内容更有难度,其实图可以说是树结构更为普通的表现形式,它的每个元素都可以与多个元素之间相关联,所以结构比树更复杂,然而越复杂的数据结构在现实中用途就越大了,功能与用途密切联系,所以 ...
- PAT-1013 Battle Over Cities (25 分) DFS求连通块
It is vitally important to have all the cities connected by highways in a war. If a city is occupied ...
- 网络流三大算法【邻接矩阵+邻接表】POJ1273
网络流的基本概念跟算法原理我是在以下两篇博客里看懂的,写的非常好. http://www.cnblogs.com/ZJUT-jiangnan/p/3632525.html http://www.cnb ...
- PAT1013: Battle Over Cities
1013. Battle Over Cities (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue It ...
随机推荐
- BIP_开发案例09_结合JavaCP通过BIP API输出报表dataprocess / rtfprocess / foprocess(案例)
20150814 Created By BaoXinjian
- 关于htmlspecialchars实体字符转码的问题
php对post过来的数据进行实体字符转码,我的页面编码是gb2312,刚开始是这样: $post = htmlspecialchars ( $post); 取到的$post值为空,但是有时候是好的( ...
- Uvision5不能进行软件仿真
Uvision5不能进行软件仿真不能进行软件仿真,报错: error 65: access violation at 0x40021000 : no 'read' permission(软件仿真出错) ...
- java获取数据库的列名,类型等信息
当你使用和学习JDK的时候,可以查看并学习它所提供给你的两个ResultSetMetaData 和DataBaseMetaData类的源码并很好的了解它们的实现原理和思路,JDBC中提供有两种源数据, ...
- ASPxGridView中DetailRow的使用
ASPxGridView是一个方便的数据显示控件,可是自动的绑定我们所需要的数据,但是有时,当数据属性过多时,我们并不一定要把所有的信息提供给所有的人,当有人需要这些数据时可以自动的进行查看,这时就可 ...
- NAND flash cache编程
PROGRAM PAGE CACHE MODE 0x80-0x15: CACHE编程实际上是标准的页编程命令的带缓冲编程模式,编程开始是发布SERIAL DATA INPUT(0x80)命令,随后是5 ...
- Codeforces 626G Raffles 【贪心】【线段树】
题意: 给n个奖池,t张彩票,q次操作. 每个奖池的奖金为pi. 每个奖池现有的彩票的数量为ai,保证ai>=1: q次操作,每次有两种,第i个奖池的现有彩票数量加一,或减一. 不允许投票的数量 ...
- vc调用dll 示例
其实,调用dll文件的方法很多,不一定要使用LoadLibrary函数.如果使用的话,你就要预先声明dll中的函数,很麻烦. 下面是我使用dll时的一点技巧,就是引入lib文件,可以参考: 一.Win ...
- android 拍照,裁切,上传圆形头像, 图片等比缩放
最近太忙了,没有空更新博客,其它部分以后再更新: 今天给大家分享的是解决解析图片的出现oom的问题,我们可以用BitmapFactory这里的各种Decode方法,如果图片很小的话,不会出现oom,但 ...
- maya user guider第一课,一些基本概念
1.maya主要用于建模,动画, 视觉特效,游戏, 和模拟 一般分为以下几类: l 建模: ploygons, nurbs, subdivision surfaces 这是不同的建模方法. po ...