Problem Description
给出两个集合,以及两个集合上的关系。判断该关系能不能构成函数
Input
多组输入。第一行数字表示集合A;第二行数字表示集合B;第三行一个数字N,表示关系的个数。以下N行,每行两个数字a b,用来描述关系a→b。0 < n < = 20000,集合A、B的大小不超过10000.
Output
每组数据输出一行,所给关系属于函数,输出’yes’ ,否则输出‘no’。
Sample Input
1 2 3 4 5 6 3 1 4 2 5 3 6 1 2 3 4 5 6 3 1 4 1 5 1 6
Sample Output
yes
no
#include <stdio.h> #include <stdlib.h> #include <string.h> char A[200001],B[200001]; int c[100001],d[100001]; int main() { while(gets(A)!=NULL) { gets(B); int n; scanf("%d",&n); int i; int flag=1; int j; for(i=1;i<=n;i++)//一一对应关系,一个x值对应一个y值 { scanf("%d%d",&c[i],&d[i]); for(j=1;j<i;j++) { if(c[i]==c[j])//判断如果x值重复,y值是否一样(必须一样) { if(d[i]!=d[j]) { flag=0; break; } } } } if(flag==1) printf("yes\n"); else printf("no\n"); gets(A); } return 0; }