#include #include using namespace std; int n, m; vector graph[1005]; bool visited[1005], dfs_visited[1005]; bool dfs(int node) { visited[node] = true; dfs_visited[node] = true; for(int i = 0; i < graph[node].size(); i++) { int sosed = graph[node][i]; if(!visited[sosed]) { if(dfs(sosed)) { return true; } } else if(dfs_visited[sosed]) { return true; } } dfs_visited[node] = false; return false; } int main() { cin >> n >> m; memset(visited, false, sizeof visited); memset(dfs_visited, false, sizeof dfs_visited); for(int i = 0; i < m; i++) { int a,b; cin >> a >> b; graph[a].push_back(b); } for(int i = 0; i < n; i++) { if(!visited[i] and dfs(i)) { cout << "DA" << endl; return 0; } } cout << "NE" << endl; return 0; }