我的解法就是去构造了一棵树

以数组的存储方式

数组的值存放节点的根。

排除空树

剩下的就是出现环和多根节点的情况

也就是排除森林和有一个节点多个入度的情况

排除森林就用到了并查集

也就是便利数组让其仅仅有一个根

排除多个入度的情况更简单

就是把这个点插入到数上时

假设这个点已经有了根节点,就出现了两个入度

#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int sett[1000 + 100],g[1000 + 100];
int find2(int x)
{
while(x != sett[x] ) x = sett[x];
return x;
}
int main()
{
int x,y,flag=1,cases=1;
while(scanf("%d%d",&x,&y)){
flag=1;
for(int i=1;i<=1000;i++) sett[i]=i;
// for(int i=1;i<=1000;i++) g[i]=i;
memset(g,0,sizeof(g)); if(x == 0 && y == 0) flag=0;
if(x < 0 && y < 0) break;
else sett[y]=x;
g[x]=1;
g[y]=1; while(scanf("%d%d",&x,&y)){
g[x]=1;
g[y]=1;
if(!x&&!y) break;
int fx = sett[x];
int fy = sett[y];
if( fy != y) //out circle and two roots
flag=0;
else sett[fy]=fx;
} int countt=0;
for(int i=1;i<=1000;i++) if(g[i]&&sett[i]==i) countt++;
// printf("countt %d\n",countt);
if(countt > 1) flag=0;
// printf("flag %d\n",flag
if(flag) printf("Case %d is a tree.\n",cases);
else printf("Case %d is not a tree.\n",cases);
cases++;
// for(int i=1;i<=10;i++)
// printf("%d ",i);
// printf("\n");
// for(int i=1;i<=10;i++)
// printf("%d ",sett[i]);
// printf("\n");
}
return 0;
}

最新文章

  1. 开放数据库互联ODBC配置(odbcconf)
  2. SSM——(二):easyUI的CRUD
  3. TI的DSP、ST的ARM、Intel的X86浮点性能对比
  4. FusionCharts的使用方法(php)
  5. JS 获取上一层目录
  6. Linux 容器的使用
  7. ASP.NET MVC5学习笔记之Action参数模型绑定基本过程
  8. 【转】Google推荐的命名规则——Android图片资源
  9. Spring 3 MVC and JSON example
  10. hdu 4778 Gems Fight! 博弈+状态dp+搜索
  11. js导出成excel
  12. Android新建项目后src下没有自动生成文件
  13. NodeJS学习指南
  14. Linux启动kettle及linux和windows中kettle往hdfs中写数据(3)
  15. 大型ERP系统在线体验
  16. fillder---断言,更改提交数据
  17. .NET自动化测试工具链:Selenium+NUnit+ExtentReport
  18. 模仿Semaphore自定义自己的 信号量
  19. PyCharm‘s Project Deployment
  20. 税控服务器 TC5002UpdatePackage 安装更新

热门文章

  1. [ZJOI2015]幻想乡战略游戏(点分树)
  2. JZOJ5787轨道(容斥+DP)
  3. Laravel核心解读--ENV的加载和读取
  4. 普通码农和CTO之间的差距
  5. 时间就是金钱HNCOI2000(最短路)
  6. A simpleHttp Proxy
  7. 10个关于Android开发的实用教程
  8. BEGINNING SHAREPOINT&amp;#174; 2013 DEVELOPMENT 第10章节--SP2013中OAuth概览 创建和管理应用程序身份
  9. 【CTO辩论会】移动开发人员忠于技术or 背离技术
  10. jquery开发之代码风格