[codevs1020] 孪生蜘蛛

来源:互联网 发布:做美工的工资一般多少 编辑:程序博客网 时间:2024/06/08 08:29

题目链接

题解:……

#include<cstdio>#include<iostream>#include<cstring>using namespace std;#define INF 0x3f3f3f3fint n,sum=INF;int x,y,z;int x1,y1;int w[105][105];void init(){    memset(w,0x3f,sizeof(w));    cin>>n;    for(int i=1;i<=n;i++) w[i][i]=0;    while(scanf("%d%d%d",&x,&y,&z)!=EOF&&x)        w[x][y]=w[y][x]=z;}void floyed(){    for(int k=1;k<=n;k++)        for(int i=1;i<=n;i++)            for(int j=1;j<=n;j++)                w[i][j]=min(w[i][j],w[i][k]+w[k][j]);}int main(){    for(int i=1;i<=n;i++)        for(int j=1;j<=n;j++)//枚举两个蜘蛛位置z        {             int maxn=-INF;             for(int k=1;k<=n;k++)                 maxn=max(maxn,min(w[i][k],w[j][k]));//最坏情况             if(maxn<sum&&i!=j)//找最优             {                 sum=maxn;                 x1=i,y1=j;             }        }    cout<<x1<<" "<<y1;    return 0;}
0 0