题目链接:

http://codeforces.com/problemset/problem/659/E

题意:

给定n个点和m条双向边,将双向边改为单向边,问无法到达的顶点最少有多少个?

分析:

无法到达的话即入度为0。

DFS判断每一个连通块中是否存在环,如果存在环,就能保证环中每个点的入度都大于等于1。否则,有头有尾,头的入度为0。

代码:

#include<cstdio>
#include<queue>
#include<cstring>
#include<iostream>
#include<vector>
using namespace std;
const int maxn = 1e5 + 5;
vector<int>v[maxn];
int vis[maxn];
int ans;
void dfs(int now, int pre)
{
if(vis[now]) {ans = 0;return;}
vis[now] = 1;
for(int i = 0; i < v[now].size(); i++){
if(v[now][i] != pre)
dfs(v[now][i], now);
}
}
int main (void)
{
int n, m;scanf("%d%d", &n,&m);
int a, b;
for(int i = 0; i < m; i++){
scanf("%d%d", &a, &b);
v[a].push_back(b);
v[b].push_back(a);
}
memset(vis, 0, sizeof(vis));
int res = 0;
for(int i = 1; i <= n; i++){
if(vis[i]) continue;
ans = 1;
dfs(i, 0);
res += ans;
}
printf("%d\n", res);
return 0;
}

最新文章

  1. 与你相遇好幸运,使用gulp流程化Typescript后端开发
  2. meta标签和作用
  3. 今天心情好,一起探讨下《送给大家的200兆SVN代码服务器》怎么管理我们的VS代码?
  4. Java之重载与覆盖
  5. Android数据共享
  6. android EditText长按屏蔽ActionMode context菜单但保留选择工具功能
  7. OC5_复合类的内存管理
  8. R 语言画图的基本参数
  9. Android 颜色渲染(五) LinearGradient线性渲染
  10. uva 10401 Injured Queen Problem(dp)
  11. android 自定义百度地图放大缩小
  12. shell输出不换行符合换行符
  13. arcgis属性选取like用法
  14. 精通 JS正则表达式(转)
  15. 数据结构 单链表&amp;顺序表
  16. 物理引擎中velocity的单位是个什么鬼?
  17. VR一体机如何退出FFBM(QFIL)
  18. 【Java编程思想笔记】注解--元注解
  19. 【坑】linux目录软连接的相关操作--很容易误操作
  20. JavaScript基础回顾一(类型、值和变量)

热门文章

  1. 【java基础】Java锁机制
  2. SSAS 系列01- DAX公式常用公式
  3. 螺旋数字的python实现
  4. HashMap详解 基于jdk1.7
  5. Vue构建命令
  6. this.$refs.tabs.activeKey ref就是vue里面的id
  7. 原生查找DOM的方法
  8. C++虚析构函数的使用
  9. POJ-1002-487-3279(字符串)
  10. lr函数之lr_eval_string()函数的使用学习