1019 集合论与图论
来源:互联网 发布:淘宝拍卖车辆靠谱吗 编辑:程序博客网 时间:2024/05/22 08:14
1019 集合论与图论
一道简单(然而我做了2h)的题目,
提了4次,最后仔细一看——MD有自环,这是闹哪样。
好生气好生气。
啊啊,
第一次——没有完全重置数据。
第二、三次——没有发现自环。(对于上一次的问题解决方案:方案一:认真一点点找需要重置的数据、方案二:定义函数)
第四次——AC。(对于上一次的问题解决方案:对于自环,把原来防止自环出现的visit数组删去了)
代码如下
#include<stdio.h>#include<string.h>#include<stdbool.h>typedef struct edge{ int to; int next;}E;int head[100000];E a[100000];int dfs(int begin,int num){ int temp; int lemp; int flag=0; temp=head[num]; lemp=head[begin]; while(temp) { flag=0; while(lemp) { if(a[lemp].to==a[temp].to) { flag=1; break; } lemp=a[lemp].next; } if(flag==0) return 0; temp=a[temp].next; } return 1;}int main(){ int T; int N,M; int i; int u,v,temp; int flag=1; scanf("%d",&T); while(T--) { flag=1; scanf("%d %d",&N,&M); memset(head,0,sizeof(head)); for(i=1;i<=100000;i++)//要手动置零 { a[i].to=0; a[i].next=0; } for(i=1;i<=M;i++) { scanf("%d %d",&u,&v); a[i].to=v; a[i].next=head[u]; head[u]=i; } for(i=1;i<=N;i++) { temp=head[i]; while(temp) { if(dfs(i,a[temp].to)) temp=a[temp].next; else { flag=0; break; } } if(flag==0) break; } if(flag) printf("Yes\n"); else printf("No\n"); } return 0;}
0 0
- 1019 集合论与图论
- CODE[VS]1019 集合论与图论
- codevs 1019 集合论与图论
- codevs 1019 集合论与图论 题解报告
- 康托尔与集合论
- 数理逻辑与集合论发展
- 数理逻辑与集合论
- Bourbaki集合论(1)译者序与作者简介
- Bourbaki集合论(9)公理与推理模式索引
- 朴素集合论
- 数学:确定性的丧失---第十一章 形式主义与集合论公理化基础
- 关于集合论章课后习题与教程习题解析纠错及个人分析
- 集合论——关系的闭包,等价关系与划分
- 集合论的产生
- 基础集合论笔记 目录
- Bourbaki集合论(6)第2章 集合论
- 基础集合论 第一章 3 集合论的公式和条件
- Maxima在集合论中的应用
- 2016.11.11小练习
- 9G第几天
- maven profile实现多环境打包
- 关于安卓布局优化的几点建议
- 模拟spring IOC,DI,深入理解spring IOC,DI的好处
- 1019 集合论与图论
- 对规则的攻击
- Codevs1995 黑魔法师之门 并查集
- Word插入表目录以及合并表目录
- Android Studio 如何手动更新到最新的gradle,拒绝等待
- Java中String和Int的相互转换
- 以太网帧最小帧长与最大帧长
- 盒子模型
- 一次气势恢宏的阅读经历