离散题目12

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; }

猜你喜欢

转载自blog.csdn.net/waitingac/article/details/80560280