HDU 4324 (拓扑排序) Triangle LOVE

时间:2021-05-07 19:16:02

因为题目说了,两个人之间总有一个人喜欢另一个人,而且不会有两个人互相喜欢。所以只要所给的图中有一个环,那么一定存在一个三元环。

所以用拓扑排序判断一下图中是否有环就行了。

 #include <cstdio>
#include <cstring> const int maxn = + ;
char G[maxn][maxn];
int c[maxn];
int n; bool dfs(int u)
{
c[u] = -;
for(int v = ; v < n; v++) if(G[u][v] == '')
{
if(c[v] < ) return false;
if(!c[v] && !dfs(v)) return false;
}
c[u] = ;
return true;
} bool solve()
{
memset(c, , sizeof(c));
for(int i = ; i < n; i++) if(!c[i])
if(!dfs(i)) return false;
return true;
} int main()
{
//freopen("in.txt", "r", stdin); int T; scanf("%d", &T);
for(int kase = ; kase <= T; kase++)
{
scanf("%d", &n);
for(int i = ; i < n; i++) scanf("%s", G[i]);
printf("Case #%d: %s\n", kase, solve() ? "No" : "Yes");
} return ;
}

代码君