답안 #782497

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
782497 2023-07-14T03:10:14 Z andecaandeci Naboj (COCI22_naboj) C++17
0 / 110
495 ms 12592 KB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll MAXN = 2e5 + 5;
const ll MAXM = 5e5 + 5;

ll n, m;
vector<ll> adjl[MAXN], ans;
bool visited[MAXN], flag = false;
set<ll> st;

void dfs(ll now) {
  if (visited[now])
  {
    return ;
  }
  visited[now] = true;

  vector<ll> adjn = adjl[now];
  for (int i = 0; i < adjn.size(); ++i)
  {
    ll nxt = adjn[i];
    if (visited[nxt]) {
      continue ;
    }

    dfs(nxt);

    if (flag) {
      return ;
    }
  }

  ans.push_back(now);
}

void dfs2(ll now) {
  if(st.find(now) != st.end()) {
    flag = true;
    return ;
  }

  st.insert(now);
  vector<ll> adjn = adjl[now];
  for (int i = 0; i < adjn.size(); ++i)
  {
    ll nxt = adjn[i];

    if(st.find(nxt) != st.end()) {
      flag = true;
      return ;
    }

    dfs2(nxt);

    if (flag) {
      return ;
    }
  }
}

int main(){
  ios_base::sync_with_stdio(false); cin.tie(0);
  cin >> n >> m;
  for (int i = 0; i < m; ++i)
  {
    ll tmpa, tmpb;
    cin >> tmpa >> tmpb;
    adjl[tmpb].push_back(tmpa);
  }

  for (int i = 1; i <= n; ++i)
  {
    st.clear();
    dfs2(i);
    if (flag)
    {
      cout << "-1\n";
      return 0;
    }  
  }

  for (int i = 1; i <= n; ++i)
  {
    if (visited[i]) {
      continue ;
    }

    dfs(i);
  }

  // cout << ans.size() << "\n";
  // for (int i = ans.size()-1; i >= 0 ; --i)
  // {
  //   cout << ans[i] << " 1\n";
  // }
  return 0;
}

Compilation message

naboj.cpp: In function 'void dfs(ll)':
naboj.cpp:20:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   20 |   for (int i = 0; i < adjn.size(); ++i)
      |                   ~~^~~~~~~~~~~~~
naboj.cpp: In function 'void dfs2(ll)':
naboj.cpp:45:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   45 |   for (int i = 0; i < adjn.size(); ++i)
      |                   ~~^~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 4948 KB Output is correct
2 Correct 2 ms 4948 KB Output is correct
3 Correct 3 ms 4968 KB Output is correct
4 Correct 3 ms 4948 KB Output is correct
5 Correct 2 ms 4948 KB Output is correct
6 Correct 2 ms 4948 KB Output is correct
7 Correct 2 ms 4948 KB Output is correct
8 Incorrect 3 ms 4948 KB Output isn't correct
9 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 495 ms 12592 KB Unexpected end of file - int32 expected
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 4948 KB Output is correct
2 Correct 2 ms 4948 KB Output is correct
3 Correct 3 ms 4968 KB Output is correct
4 Correct 3 ms 4948 KB Output is correct
5 Correct 2 ms 4948 KB Output is correct
6 Correct 2 ms 4948 KB Output is correct
7 Correct 2 ms 4948 KB Output is correct
8 Incorrect 3 ms 4948 KB Output isn't correct
9 Halted 0 ms 0 KB -