`
人生难得糊涂
  • 浏览: 117352 次
社区版块
存档分类
最新评论

poj1469-二分图选课

 
阅读更多

题目大意:

给你p门课程和n个学生,一个学生可以选0门,1门,或者多门课程,现在要求一个由p个学生组成的集合,满足下列2个条件:

1.每个学生选择一个不同的课程

2.每个课程都有不同的代表

如果满足,就输出YES

题解:直接用二分图最大匹配即可,得到的匹配数如果等于课堂个数,则输出YES

#include<iostream>
using namespace std;
#define MAXSIZE 310
int map[MAXSIZE][MAXSIZE];
int vis[MAXSIZE];//是否拜访过
int isWho[MAXSIZE];//记录右边的点已经被左边哪个点占有
int dfs(int x ,int n)
{
	int i;
	for(i=1;i<=n;i++)//遍历右边所有点
	{
		if(!vis[i]&&map[x][i])//如果没有拜访过 并且有边存在
		{
			vis[i]=1;
			if(isWho[i]==-1||dfs(isWho[i],n))//如果这个点现在还没人要 或者可以腾出位置 注意是dfs(isWho[i])
			{
				isWho[i]=x;
				return 1;
			}
		}
	}
	return  0;
}
int main()
{
	int num,n,p,i;
	//freopen("in.txt","r",stdin);
	scanf("%d",&num);
	while(num--)
	{
		memset(map,0,sizeof(map));
		memset(isWho,-1,sizeof(isWho));
		scanf("%d%d",&p,&n);//p代表 课堂个数  n代表学生个数
		for(i=1;i<=p;i++)
		{
			int t;
			scanf("%d",&t);
			while(t--)
			{
				int t1;
				scanf("%d",&t1);
				map[i][t1]=1;
			}

		}
		int ans=0;
		for(i=1;i<=p;i++)
		{
			memset(vis,0,sizeof(vis));
			if(dfs(i,n))
				ans++;
		}
		printf("%s\n", ans == p ? "YES" : "NO");  


	}
	return 0;
}

 

0
0
分享到:
评论

相关推荐

    POJ2002-Squares

    【标题】"POJ2002-Squares"是一个经典的计算机编程题目,源自北京大学的在线判题系统(POJ,即PKU Online Judge)。这个题目主要涉及到算法设计和实现,尤其是数学和动态规划方面的知识。 【描述】"解题报告+AC代码...

    POJ3253-POJ3253-Fence Repair【STL优先队列】

    标题“POJ3253-POJ3253-Fence Repair【STL优先队列】”指的是一个在线编程竞赛题目,源自北京大学的在线判题系统POJ(Problem Online Judge)。该题目要求参赛者使用C++编程语言解决特定的问题,并且在解决方案中...

    POJ1426-Find The Multiple【BFS+同余模】

    文档`POJ1426-Find The Multiple.doc`可能包含了详细的解题思路、算法流程图以及代码解释。 总的来说,这道题目要求程序员具备扎实的算法基础,尤其是图的遍历算法BFS,以及对数论中同余模概念的理解和应用。解决这...

    POJ3020-Antenna Placement

    【标题】"POJ3020-Antenna Placement"是一个经典的计算机编程竞赛题目,源自北京大学的在线评测系统POJ(PKU Online Judge)。这个题目挑战了参赛者在算法设计和实现上的能力。 【描述】"解题报告+AC代码"意味着这...

    poj 1000 - 2000 部分题目 官方分类

    7. **图算法**:图论是计算机科学中的一大分支,题目可能涵盖DFS、BFS、最小生成树、最短路径等算法。 8. **模拟**:模拟题目要求解题者准确地按照给定的规则执行一系列操作,通常需要细心和耐心。 9. **数据结构...

    魔兽世界终极版POJ的-测试数据

    这是魔兽世界终极版POJ的-测试数据,找了好久才找到的。 本来想设置为0积分,但是它居然自动收费(o_ _)ノ。 看传送门:https://pan.baidu.com/s/1cCIwW8psGDASu2JdZawG3Q

    POJ1837-Balance

    【标题】"POJ1837-Balance"是一个在线编程竞赛题目,源自著名的编程练习平台POJ(Programming Online Judge)。这个题目旨在测试参赛者的算法设计和实现能力,特别是处理平衡问题的技巧。 【描述】"解题报告+AC代码...

    POJ1258-Agri-Net【Prim】

    **在POJ1258-Agri-Net问题中,** 可能需要处理的输入数据包括图的顶点数、边数以及每条边的两个端点和权值。输出应为这些边的序列,构成最小生成树。解题的关键在于正确实现Prim算法,并确保其运行效率足够高,以...

    POJ2299-Ultra-QuickSort

    【标题】"POJ2299-Ultra-QuickSort"是北京大学在线判题系统POJ上的一道编程题目,其主要涉及的算法是快速排序(Ultra-QuickSort)。快速排序是一种高效的排序算法,由C.A.R. Hoare在1960年提出。它的基本思想是采用...

    POJ1010-STAMPS

    2. "POJ1010-STAMPS.doc":这是一个文档文件,很可能包含了对问题的详细解释、解题思路、算法流程图、时间复杂度分析等内容,对于学习和理解这个问题的解法非常有帮助。 综合以上信息,我们可以推断,"POJ1010-...

    POJ3414-Pots

    标题“POJ3414-Pots”是一个编程竞赛题目,源自北京大学的在线判题系统POJ(Problem Online Judge)。这个题目主要考察的是算法设计和实现能力,通常涉及计算机科学中的数据结构和算法知识。 解题报告是参赛者在...

    POJ2525-Text Formalization【TrieTree】

    《POJ2525-Text Formalization:深入解析TrieTree》 在计算机科学的世界里,算法和数据结构是解决问题的关键。今天我们要探讨的是一个名为"POJ2525-Text Formalization"的问题,它涉及到一种高效的数据结构——Trie...

    POJ2503-Babelfish

    【标题】"POJ2503-Babelfish"是一个来自北京大学在线判题系统(POJ,Problem Online Judge)的编程题目。该题目要求参赛者编写程序解决特定的算法问题,通过编程语言实现,然后提交代码以供系统自动评测。 【描述】...

    POJ1003-Hangover

    【标题】"POJ1003-Hangover"是一个编程竞赛题目,源自北京大学的在线判题系统POJ(Problem Online Judge)。这类题目通常要求参赛者编写程序来解决特定的算法问题,以此锻炼和测试编程技能及算法理解能力。 【描述...

    POJ1009-Edge Detection

    【标题】"POJ1009 - 边缘检测" 在计算机图形学与图像处理领域,边缘检测是一项至关重要的技术。北京大学编程平台POJ上的第1009题,"Edge Detection"(边缘检测),旨在让学生通过编程实现对图像进行边缘检测。此题...

    POJ1201-Intervals

    【标题】"POJ1201-Intervals" 是北京大学在线编程平台POJ上的一道题目,这道题目主要涉及计算机科学中的算法设计与分析,尤其是数据结构和时间复杂度优化方面的知识。 【描述】"北大POJ1201-Intervals 解题报告+AC...

    POJ3122-Pie

    【标题】"POJ3122-Pie"是一道来自北京大学在线判题系统POJ(Problem Online Judge)的编程题目。这道题目通常被用于训练程序员的数据结构和算法技能,特别是解决数学问题的能力。在编程竞赛或者算法训练中,这类题目...

    POJ1002-487-3279【Hash+Qsort】

    标题中的"POJ1002-487-3279【Hash+Qsort】"是指一个编程挑战题目,通常在在线编程平台上出现,比如北京大学的Peking Online Judge (POJ)。这个题目结合了哈希表(Hash)和快速排序(Qsort)两种算法来解决问题。哈希...

    POJ1007-DNA Sorting

    【标题】"POJ1007-DNA Sorting"是一个编程竞赛题目,源自北京大学的在线判题系统POJ(Problem Online Judge)。这个题目要求参赛者编写程序,对DNA序列进行排序,具体而言,就是对一系列由ATCG四种碱基组成的DNA字符...

    POJ1159-Palindrome

    【标题】"POJ1159-Palindrome" 是北京大学在线编程平台POJ上的一道编程题目。这道题目主要考察的是字符串处理和回文判断的知识点。 【描述】"北大POJ1159-Palindrome 解题报告+AC代码" 暗示了解决这道问题的方法和...

Global site tag (gtag.js) - Google Analytics