Hust oj 1708 许可证(dfs)
来源:互联网 发布:百度地图 矢量数据 编辑:程序博客网 时间:2024/05/17 01:29
许可证Time Limit: 1000 MSMemory Limit: 32768 KTotal Submit: 305(82 users)Total Accepted: 108(71 users)Rating: Special Judge: NoDescription
mac最近开了一家麻辣面馆,但是开面馆也不是件容易的事情,为了让广大客户相信自己面馆的权威性,mac想尽可能的获得多的许可证,但是发证的单位也不是随便就给发证的,通常情况下,发证的单位要看看店内是否有其它的相关证明,如果有才给发证。例如:mac要想获得美食局的证那么他就必须先获得卫生局的证件。现在mac手里只有一个房产证,我们将其编号为1,mac想知道他最多可以获得多少证件。
Input多组测试数据。
对于每组测试数据,第一行输入两个整数n,m(0<n, m<=100),分别表示证件的种数(编号1~n),和已知的不同证件之间的约束的关系数。
接下来的m行,每行两个正数a,b(1<=a,b<=n)表示如果mac有证件a,就可以获得证件b。
Output对于每组测试数据,输出一个整数表示mac最多可以获得的证件的种类数(包括一开始就有的1号证件)。
Sample Input4 3
1 2
2 3
3 4
Sample Output4
就是从1开始dfs,只要能走到的点都说明能拿到许可证,最后扫一遍vis数组就行了
#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>using namespace std;const int maxn = 305;const int Inf = 0x3f3f3f;int map[maxn][maxn];int vis[maxn];int n,m;int x,y;void dfs(int x){ if(vis[x]) return ; vis[x] = 1; for(int i=1;i<=n;i++) { if(map[x][i]==1 && !vis[i]) dfs(i); }}int main(){ while(~scanf("%d%d",&n,&m)) { memset(map,0,sizeof(map)); memset(vis,0,sizeof(vis)); for(int i=0;i<m;i++) { scanf("%d%d",&x,&y); map[x][y] = 1; } dfs(1); int cnt = 0; for(int i=1;i<=n;i++) { if(vis[i]) cnt++; } printf("%d\n",cnt); }}
0 0
- Hust oj 1708 许可证(dfs)
- Hust oj 1143 泉水(dfs)
- 哈理工OJ 1708 许可证【临街表+dfs】
- Hust oj 2084(大数)
- Hust oj 1334 最好的心情(DP+DFS)
- Hust oj 2038 联系网络(MST)
- Hust oj 2234 土豪银行(贪心)
- Hust oj 2113 Count(Map)
- Hust oj 1305 多边形(数学)
- Hust oj 1677 一个函数(栈)
- Hust oj 1039 修路(二分)
- Hust oj 1369 Buy Computers(水题)
- Hust oj 2121 你猜猜(水题)
- Hust oj 2005 排列问题(STL)
- Hust oj 1559 线段相交(叉积)
- Hust oj 2106 Genuine Messages(字符串)
- Hust oj 2235 毒(水题)
- Hust oj 1177 Time Transform(字符串)
- opencv 用到哪些头文件
- linux常用命令
- 关于oracle多条记录合并为一条记录的方法
- 用HTML 5的WebSocket实现网络聊天室
- 检测网页区域的宽高
- Hust oj 1708 许可证(dfs)
- iOS开发——AFNetworking框架使用详解
- 实习入职第八天---android 围绕中心旋转动画
- Foundation框架—字符串NSString 和 NSMutableString
- C#/C++ 模板和 C# 泛型之间的区别(C# 编程指南
- Struts2实现文件上传和下载
- 目录处理命令
- 用Qt实现一个桌面弹幕程序(十)-- -- 网页服务端的实现①
- 移动硬盘打不开