求条
查看原帖
求条
1446545
XHZnewlife楼主2024/11/23 13:25

不管输入什么,输出的都是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

2024/11/23 13:25
加载中...