代码如下
#include <bits/stdc++.h>
using namespace std;
int w[101][101];
int main()
{
int n;
cin >> n;
int temp = n - 1;
for (int i = 0; i <= n; i++)
{
for (int j = 0; j <= n; j++)
{
if (i == j)
{
w[i][j] = 0;
}
else {
w[i][j] = w[j][i] = 1000000;
}
}
}
while (temp--)
{
int a, b;
cin >> a >> b;
w[a][b] = 1;
w[b][a] = 2;
}
for (int k = 1; k <= n; k++)
{
for (int i = 1; i <= n; i++)
{
if (i != k)
{
for (int j = 1; j <= n; j++)
{
if (j != k && j != i && w[i][k] + w[k][j] < w[i][j])
{
w[i][j] = w[i][k] + w[k][j];
}
}
}
}
}
int max = 0;
int max_ = 0;
int temp1 = 1;
for (int i = 2; i <= n; i++)
{
if (w[1][i] > max)
{
max = w[1][i];
}
if (w[1][i] == w[1][i + 1])#这里出问题
{
temp1++;
}
else {
if (temp1 > max_)
{
max_ = temp1;
}
temp1 = 1;
}
}
int p, q;
cin >> p >> q;
int sum = w[p][q];
cout << max + 1 << endl << max_ << endl << sum;
return 0;
}
求宽度出错