#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
bool v[5555]={0};
int n;
char s[5555][5555];
bool dfs(int i,int dad)
{
v[i]=true;
for (int j=1;j<=n;j++)
{
if (s[i][j]-'0')
{
if (s[j][dad]-'0')
{
printf("%d %d %d\n",dad,i,j);
return true;
}
if (!v[j])
{
if (dfs(j,i)) return true;
}
}
}
return false;
}
int main()
{
cin>>n;
for (int i=1;i<=n;i++)
{
scanf("%s",s[i]+1);
}
for (int i=1;i<=n;i++)
{
if (!v[i])
{
if (dfs(i,i)) return 0;
}
}
printf("-1\n");
return 0;
}
Codeforces 117C. Cycle 寻找环
最新推荐文章于 2025-04-16 14:07:12 发布
本文介绍了一种在特定类型的有向图(锦标赛图)中寻找长度为3的环的方法。给定一个由n个顶点构成的锦标赛图,通过遍历图的邻接矩阵并运用深度优先搜索算法,来找出是否存在这样的环。如果找到了符合条件的三个顶点,则输出这些顶点;若不存在,则输出-1。

248

被折叠的 条评论
为什么被折叠?



