怎么写了Floyd都能骗80
有用Dijkstra/SPFA/Bellman-Ford等低于O(N2logN) 在我的代码基础上进行修改的吗?
#include <bits/stdc++.h>
#define N 3007
using namespace std;
int n, m, x, y, s1, t1, s2, t2, f[N][N], ans = -1, tot;
int main()
{
memset(f, 0x3f, sizeof(f));
cin >> n >> m;
for (int i = 1; i <= m; ++i)
{
cin >> x >> y;
f[x][y] = 1;
f[y][x] = 1;
tot++;
}
cin >> s1 >> t1 >> s2 >> t2;
for (int i = 1; i <= n; ++i)
f[i][i] = 0;
for (int k = 1; k <= n; ++k)
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= n; ++j)
f[i][j] = min(f[i][k] + f[k][j], f[i][j]);
for (int i = 1; i <= n; ++i)
if (f[1][i] + f[i][s1] <= t1 && f[1][i] + f[i][s2] <= t2)
{
ans = max(ans, tot - f[1][i] - f[i][s1] - f[i][s2]);
}
cout << ans << endl;
return 0;
}