离散题目15
程序员文章站
2022-05-27 15:38:49
...
离散题目15
Time Limit: 1000MS Memory Limit: 65536KB
Problem Description
给出集合X、X上的关系R,判断关系R是不是传递的。
例如: A={1,2,3} , R={<1,1>,<1,2>,<2,1>,<3,3>,<2,3>,<3,2>, <2,2>,<1,3>,<3,1>} 显然,R具有传递性。
Input
多组输入,每组输入第一行为集合X的元素;第二行为一个整数n ( n > 0 ),代表X上的关系R中序偶的个数;接下来n行用来描述X上的关系R,每行两个数字,表示关系R中的一个序偶。细节参考示例输入。
非空集合X的元素个数不大于500,每个元素的绝对值不大于2^32 - 1。
Output
每组输入对应一行输出,如果关系R具有传递性输出 ”true”,否则输出 ”yes”。
Example Input
1 2 3 9 1 1 2 2 3 3 1 2 2 1 1 3 3 1 2 3 3 2 1 2 3 6 1 1 1 2 3 3 2 3 3 2 2 2
Example Output
true yes
Hint
Author
传递性是在逻辑学和数学中,若对所有的 a,b,c 属于 X,下述语句保持有效,则集合 X 上的二元关系 R 是传递的:「若a 关系到 b 且 b 关系到 c, 则 a 关系到 c。」
精简思路为 若1 ->2 ,2->3, 3->4,且存在1->4,则集合传递;
暴力for循环可以解决
以下为AC代码
#include <bits/stdc++.h>
using namespace std;
struct node
{
int x;
int y;
} q[100101];
set<int> s;
string cc;
bool INPUT()
{
s.clear();
string si;
if(!getline(cin, si))
return false;
stringstream ss(si);
int t;
while(ss >> t)
s.insert(t);
return true;
}
int main()
{
int n, i;
int j, k;
while(INPUT())
{
bool flag = true;
scanf("%d", &n);
for(i = 0; i < n; i++)
{
scanf("%d %d", &q[i].x, &q[i].y);
if(s.count(q[i].x) == 0 || s.count(q[i].y) == 0)
flag = false;
}
if(flag)
{
for(i = 0; i < n; i++)
{
for(j = 0; j < n; j++)
{
if(q[i].y == q[j].x)
{
bool judge_flag = false;
for(k = 0; k < n; k++)
{
if(q[k].x == q[i].x && q[k].y == q[j].y)
{
judge_flag = true;
break;
}
}
if(judge_flag == false)
{
flag = false;
break;
}
}
}
if(flag == false)
break;
}
}
if(flag)
printf("true\n");
else
printf("yes\n");
//getchar();
getline(cin, cc);//这里同样是因为getline连续使用时,第二个会覆盖掉第一个,所以在多组输入时,加一行铺垫,或者可以清空缓存
}
return 0;
}
/***************************************************
Result: Accepted
Take time: 20ms
****************************************************/
上一篇: js中关于原型链与继承的理解
推荐阅读
-
js压缩工具哪些好(推荐这15款压缩工具)
-
整理的15个非常有用的 HTML5 开发教程和速查手册
-
mysql题目和详细答案(2021数据库考试题及答案)
-
惠普wasd 15 ax016tx游戏本怎么样?
-
惠普ENVY 15 as110TU笔记本性能怎么样?
-
2021年浙江省15所重点大学排名及录取分数线
-
世界最毒十大蜘蛛 红背蜘蛛上榜,悉尼漏斗网蛛15分钟能致死
-
推荐:15个自建站内容排版工具,提升用户吸引力
-
2021天津15所一本大学有哪些?附天津一本大学排名顺序及分数线
-
ios8 UITableView设置 setSeparatorInset UIEdgeInsetsZero不起作用的解决办法(去掉15px空白间距)