/*判断是否为有向无环图DAG
*/
#include <iostream>
#include <stdlib.h>
#include <vector>
#include <memory.h>
using namespace std;
struct Node
{
int destNum;
int dest[100];
}node[1000];
int visit[1000];
int n,m;
bool ok;
void dfs(int index)
{
if(visit[index] == 1)
{
ok = true;
}
if(ok)
return ;
visit[index] = 1;
for(int i=0; i<node[index].destNum; i++)
{
dfs(node[index].dest[i]);
}
visit[index] = 0;
}
int main()
{
while(cin >> n >> m)
{
ok = false;
memset(visit, 0, sizeof(visit));
memset(node, 0, sizeof(node));
for(int i=1; i<= m; i++)
{
int start, end;
cin >> start >> end;
node[start].dest[node[start].destNum++]= end;
}
for(int i=1; i<=n; i++)
{
memset(visit, 0, sizeof(visit));
ok = false;
dfs(i);
if(ok)
{
cout << 0 << endl;
break;
}
}
if(!ok)
cout << 1 << endl;
}
system("pause");
return 0;
}
DAG? 判断是否为有向无环图DAG
最新推荐文章于 2023-11-29 17:51:13 发布