wa#5 #6 求解
查看原帖
wa#5 #6 求解
1188369
pyz51楼主2024/7/6 22:16
#include<bits/stdc++.h>  
using namespace std;  
const int N=1e6+5;  
const int M=2e5+5;  
const int inf=2147483647;  
const long long lof=9223372036854775807;  
#define ll long long  
#define bug cout<<"...here...\n"  
#define mem(a,b) memset(a,b,sizeof a)
ll dis[105][105],tot,n,x,y,ans,maxx,vis[105];
void floyd(){
    for(int k=1;k<=n;k++)
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
                dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
}
ll dfs(ll x,ll dep){
    vis[x]=1;
    ll sum=0,cnt=0;
    for(int i=1;i<=n;i++){
        if(dis[x][i]!=inf&&i!=x&&!vis[i]){
            cnt++;
            sum+=dfs(i,dep+1);
        }
    }
    ans=max(ans,dep);
    maxx=max(sum,maxx);
    return cnt;
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) if(i!=j) dis[i][j]=inf;
    for(int i=1;i<n;i++){
        cin>>x>>y;
        dis[x][y]=1;
        dis[y][x]=2;
    }
    dfs(1,1);
    floyd();
    cout<<ans<<'\n'<<maxx<<'\n';
    int x,y;
    cin>>x>>y;
    cout<<dis[x][y];
    return 0;
}
2024/7/6 22:16
加载中...