這道題意較難理解:john有多個農場,每個農場有多個農區,給出農區的位置以及農區之間是否有路線(就是鄰接表),求出用最好的方法連線後(可以理解為合併後的乙個農場),求出這個農場直徑(相距最遠的兩個農區的最短路)
我的做法是先將農場給劃分開來,因為連線後的的直徑有三種可能,先將第乙個農場記作x,另乙個記作y:
x的直徑;
y的直徑;
分別從連線點出發,x的最長路線加上y的最長路線再加上連線點的距離。
#includeusingnamespace
std;
int x[155],y[155
];double d[155][155], d[155][155
];int belong[155
];int p[155
];int q[155][155
];int
n;double f[155
];double kuai[155][155
];void dfs(int l,inth)}
double zhijing(int t,intk);
double ws[155
];
for(int i=1;i<=p[t];++i)
ws[i]=1e9;
ws[k]=0
;
double ans=0
;
for(int i=1;ii)
for(int i=1;i<=p[t];++i)
kuai[t][k]=ans;
return
ans;}//
最短路演算法
double liantong(int x,int y,int x1,int y1, double
dd)int
main()
}int k=0
;
for(int i=1;i<=n;++i)
if(!belong[i]) dfs(i,++k);//
dfs求出每個連通塊
for(int i=1;i<=k;++i)
double tr=1e9;
for(int i=1;i<=k;++i)}}
}printf(
"%.6f\n
",tr);
return0;
}
洛谷 P1522 牛的旅行 Cow Tours
題目描述 農民 john的農場裡有很多牧區。有的路徑連線一些特定的牧區。一片所有連通的牧區稱為乙個牧場。但是就目前而言,你能看到至少有兩個牧區通過任何路徑都不連通。這樣,farmer john就有多個牧場了。john想在牧場裡新增一條路徑 注意,恰好一條 對這條路徑有以下限制 乙個牧場的直徑就是牧場...
洛谷P1522 牛的旅行 Cow Tours
農民 john的農場裡有很多牧區。有的路徑連線一些特定的牧區。一片所有連通的牧區稱為乙個牧場。但是就目前而言,你能看到至少有兩個牧區通過任何路徑都不連通。這樣,farmer john就有多個牧場了。john想在牧場裡新增一條路徑 注意,恰好一條 對這條路徑有以下限制 乙個牧場的直徑就是牧場中最遠的兩...
洛谷 P1522 牛的旅行 Cow Tours
農民 john 的農場裡有很多牧區。有的路徑連線一些特定的牧區。一片所有連通的牧區稱為乙個牧場。但是就目前而言,你能看到至少有兩個牧區通過任何路徑都不連通。這樣,farmer john 就有多個牧場了。john 想在牧場裡新增一條路徑 注意,恰好一條 對這條路徑有以下限制 乙個牧場的直徑就是牧場中最...