#include <iostream>
#include <vector>
#include <utility>
using namespace std;
const int nx=1e5+3;
int n, m, u, v, in[nx], vs[nx], mx, pmx, res;
vector<int> adj[nx], radj[nx];
vector<pair<int, int>> r;
void dfs(int x, int val) {
if (val>mx) mx=val, pmx=mx;
for (int u:adj[x]) {
dfs(u, val+1);
vs[u];
}
}
int main() {
cin.tie(0)->sync_with_stdio(0);
cin>>n>>m;
for (int i=0; i<m; i++) {
cin>>u>>v;
adj[u].push_back(v);
radj[v].push_back(u);
in[v]++;
}
for (int i=1; i<=n; i++) {
if (vs[i]||in[i]) continue;
res++;
mx=0;
pmx=0;
dfs(i, 0);
r.push_back({mx, pmx});
}
if (res==1) {
cout<<mx+1;
} else {
for (auto [a,b]:r) res+=a+b;
cout<<res;
}
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |