【正经题解】朋友的朋友是朋友
2024-03-18 13:30:03
发布于:浙江
12阅读
0回复
0点赞
初始化距离矩阵,将所有点之间的距离设为无穷大(表示不可达),然后将自身到自身的距离设为 。
根据输入的朋友关系更新图的邻接矩阵,表示直接的朋友关系。
计算任意两点之间的最短路径。
根据查询的两个人之间的最短路径长度,输出相应的关系,包括直接朋友、间接朋友和陌生人。
#include<bits/stdc++.h>
using namespace std;
int d[2005][2005];
int main(){
int INF=0x7ffffff;
for(int i=0;i<2005;i++){
for(int j=0;j<2005;j++){
d[i][j]=INF;
}
}
int m;
cin>>m;
int n=-1;
while(m--){
int a,b;
cin>>a>>b;
d[a][b]=d[b][a]=1;
n=max(n,max(a,b));
}
for(int i=1;i<=n;i++){
d[i][i]=0;
}
int x,y;
cin>>x>>y;
for(int k=1;k<=n;k++){
int res=d[x][k]+d[k][y];
if(res<d[x][y])d[x][y]=res;
}
if(d[x][y]==1){
cout<<"friend";
}
else if(d[x][y]>1&&d[x][y]<INF)cout<<"indirect friend";
else{
cout<<"stranger";
}
return 0;
}
这里空空如也
有帮助,赞一个