博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PAT 1021_部分正确
阅读量:6477 次
发布时间:2019-06-23

本文共 1267 字,大约阅读时间需要 4 分钟。

hot3.png

参考了:

但仍有一个case段错误:

#include 
#include
#include 
#define N 1000+1using namespace std;int deepest[N];int visit[N];//edge[i]标示与i连接的点的序列vector
 edge[N];//对点进行深度优先搜索得到最大深度int dfs(int v){ //已经被访问过了 if(visit[v] == 1) return 0; visit[v] = 1; //不连接其他点,此时的深度为1 if(edge[v].size() == 0) return 1; int i; int max = 0; for(i=0; i
 max) max = tmp; } } //加上本层 return max + 1;}int main(){ //freopen("in.txt","r",stdin); memset(deepest,0,sizeof(deepest)); memset(visit,0,sizeof(visit)); int n,a,b; scanf("%d", &n); while(scanf("%d %d",&a,&b)!=EOF){ edge[a].push_back(b); edge[b].push_back(a); } int i,j; int maxdeep = 0; int flag = 0;//标志对点i进行dsf完后,是否还有点未被访问到,若有,说明图不是联通的 for(i=1; i<=n; i++){ //若图是连通的,每次dfs前将visit清空 if(flag == 0) memset(visit,0,sizeof(visit)); deepest[i] = dfs(i); if(deepest[i] > maxdeep) maxdeep = deepest[i] ; //一趟 dfs完了,仍有点未被访问,说明图不是连通的 for(j=i; j<=n; j++){ if(visit[j] == 0){ flag ++; //下一次从点j开始 i = j-1;//i++后就是j break;//退出for j的循环 } } } if(flag == 0){ for(i=1; i<=n; i++){ if(deepest[i] == maxdeep) printf("%d\n",i); } }else{ printf("Error: %d components\n",flag+1); } return 0;}

转载于:https://my.oschina.net/kaneiqi/blog/203630

你可能感兴趣的文章
开篇,博客的申请理由
查看>>
[JSOI2008]星球大战starwar BZOJ1015
查看>>
centos 7 部署LDAP服务
查看>>
iOS项目分层
查看>>
IntelliJ IDEA 注册码
查看>>
String字符串的截取
查看>>
DynamoDB Local for Desktop Development
查看>>
Shell编程-环境变量配置文件
查看>>
Struts2和Spring MVC的区别
查看>>
理解Javascript参数中的arguments对象
查看>>
git代码冲突
查看>>
git bash 风格调整
查看>>
linux操作系统加固软件,系统安全:教你Linux操作系统的安全加固
查看>>
linux中yum源安装dhcp,24.Linux系统下动态网络源部署方法(dhcpd)
查看>>
HDOJ-1010 Tempter of the Bone
查看>>
JavaNIO基础02-缓存区基础
查看>>
日本开设无人机专业,打造无人机“人才市场”
查看>>
190行代码实现mvvm模式
查看>>
兼容几乎所有浏览器的透明背景效果
查看>>
jeesite 框架搭建与配置
查看>>