啊。你听我辩解~
思路已经捋出来了,就是最后的计算结果出不来!!!玄关求助!!!急~
#include<bits/stdc++.h>
using namespace std;
const int N = 50010;
vector <int> g[N];
int a[N], b[N], n, m, ans = -1e9, x, y;
bool f[N];
int main(){
cin >> n >> m;
for(int i = 1;i <= m;i++){
cin >> x >> y;
g[x].push_back(y);
f[y] = true;
}
for(int v = 1;v <= m;v++)
if(f[v]) g[0].push_back(v);
a[0] = 1;
for(int u = 0;u <= n;u++)
for(int v : g[u]) a[v] += a[u];
b[n] = 1;
for(int u = n;u >= 0;u--)
for(int v : g[u]) b[u] += b[v];
for(int i = 1;i <= m;i++) ans = max(ans, a[i] * b[i+1]);
cout << ans << endl;
return 0;
}
拜托各位同(DA)学(LAO)们帮忙调调,谢谢啦~