DUTOJ-1021: cls的石头

xiaoxiao2021-02-28  40

cls陪ytt在小河边上玩,他发现了河里有许许多多的石头,每一个石头都有一定的重量且有自己的编号,石头的重量两两不相等。cls随机抽取两个石头,假设编号是 A 和 B,他会记录 A 比 B 重还是 B 比 A 重,然后将 A 和 B 再放回河里。cls这样操作了 M次之后,ytt觉得cls太无聊了,当他又一次从河里捞出两个石头的石头,ytt突然问他:从你之前记录的石头重量的比较结果 能不能直接推断出当前两个石头的重量谁大谁小?cls太忙辣想让你帮帮他,从已有的记录能不能推断当前的关系。

图的任意两点的可达性,根据输入邻接矩阵的i、j项,之后深度优先搜索,若找到目标则返回true

代码如下:

#include <iostream> #include <string.h> #include <stdio.h> #include <cstring> using namespace std; int n,m; int grap[1001][1001]; bool DFS(int c,int d) { bool flag = false; if(grap[c][d]==1)return true; else{ for(int i=0;i<n;i++){ if(grap[c][i]==1 && i!=c){ flag = DFS(i,d); if(flag) return flag; } } return flag; } } int main() { int x,y; while(scanf("%d",&n)!= EOF){ scanf("%d",&m); memset(grap,0,sizeof(grap)); for(int i=0;i<m;i++) { scanf("%d",&x); scanf("%d",&y); grap[x-1][y-1] = 1; } scanf("%d",&x); scanf("%d",&y); if(DFS(x-1,y-1)) printf("first\n"); else if(DFS(y-1,x-1)) printf("second\n"); else printf("unknown\n"); } return 0; }
转载请注明原文地址: https://www.6miu.com/read-2627586.html

最新回复(0)