不管输入什么,输出的都是0 求条 代码:
#include<bits/stdc++.h>
using namespace std;
int n;
int s,t,a,b;
int x[5],y[5];
int za,zb;
struct FL{
int xf,yf;
double mp[405];
int city;
};
vector<FL> flight;
FL fl;
FL xy;
void rect(){
if(sqrt(pow((x[1]-x[2]),2)+pow((y[1]-y[2]),2))+sqrt(pow((x[1]-x[3]),2)+pow((y[1]-y[3]),2))==sqrt(pow((x[2]-x[3]),2)+pow((y[2]-y[3]),2)))x[4]=x[3]-(x[1]-x[2]),y[4]=y[3]-(y[1]-y[2]);
else if(sqrt(pow((x[2]-x[3]),2)+pow((y[2]-y[3]),2))+sqrt(pow((x[2]-x[1]),2)+pow((y[2]-y[1]),2))==sqrt(pow((x[1]-x[3]),2)+pow((y[1]-y[3]),2)))x[4]=x[3]-(x[2]-x[1]),y[4]=y[3]-(y[2]-y[1]);
else if(sqrt(pow((x[3]-x[2]),2)+pow((y[3]-y[2]),2))+sqrt(pow((x[3]-x[1]),2)+pow((y[3]-y[1]),2))==sqrt(pow((x[1]-x[2]),2)+pow((y[1]-y[2]),2)))x[4]=x[2]-(x[3]-x[1]),y[4]=y[2]-(y[3]-y[1]);
return;
}
void jmp(int c){
int T;
cin>>T;
for(int i=1;i<=4;i++){
xy.xf=x[i];
xy.yf=y[i];
xy.city=c;
flight.push_back(xy);
}
for(int i=1;i<4;i++){
for(int j=i+1;j<=4;j++){
flight[i].mp[j]=sqrt(pow(x[j]-x[i],2)+pow(y[j]-y[i],2))*T;
flight[j].mp[i]=flight[i].mp[j];
}
}
for(int i=1;flight[i].city<c;i++){
for(int j=(c-1)*4+1;j<=(c-1)*4+4;j++){
flight[i].mp[j]=sqrt(pow(flight[i].xf-flight[j].xf,2)+pow(flight[i].yf-flight[j].yf,2))*t;
flight[j].mp[i]=flight[i].mp[j];
}
}
return;
}
void read(int c){
for(int i=1;i<=3;i++)cin>>x[i]>>y[i];
rect();
jmp(c);
return;
}
void flag(int c){
if(c==a)za=flight.size();
if(c==b)zb=flight.size();
return;
}
void Floyd(){
for(int i=1;i<flight.size();i++)
for(int j=1;j<flight.size();j++)
for(int k=j+1;k<flight.size();k++){
if(flight[j].mp[k]>flight[j].mp[i]+flight[i].mp[k]){
flight[j].mp[k]=flight[j].mp[i]+flight[i].mp[k];
flight[k].mp[j]=flight[j].mp[k];
}
}
return;
}
double write(){
double _min=INT_MAX;
for(int i=za;i<za+4;i++){
for(int j=zb;j<zb+4;j++){
if(_min>flight[i].mp[j])_min=flight[i].mp[j];
}
}
return _min;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>s>>t>>a>>b;
flight.push_back(fl);
for(int j=1;j<=s;j++){
flag(j);
read(j);
}
Floyd();
cout<<write();
flight.clear();
}
}
谢谢dalao