luogu1027 Car的旅行路線

2021-08-20 06:44:04 字數 1762 閱讀 7976

題目描述

又到暑假了,住在城市a的car想和朋友一起去城市b旅遊。她知道每個城市都有四個飛機場,分別位於乙個矩形的四個頂點上,同乙個城市中兩個機場之間有一條筆直的高速鐵路,第i個城市中高速鐵路了的單位里程**為ti,任意兩個不同城市的機場之間均有航線,所有航線單位里程的**均為t。

圖例(從上而下)

機場 高速鐵路

飛機航線

注意:圖中並沒有

標出所有的鐵路與航線。

那麼car應如何安排到城市b的路線才能盡可能的節省花費呢?她發現這並不是乙個簡單的問題,於是她來向你請教。

找出一條從城市a到b的旅遊路線,出發和到達城市中的機場可以任意選取,要求總的花費最少。

輸入輸出格式

輸入格式:

第一行為乙個正整數n(0<=n<=10),表示有n組測試資料。

每組的第一行有四個正整數s,t,a,b。

s(0

#include

#include

#include

#include

#include

#define n 500

using

namespace

std;

inline

char gc()

return *s++;

}inline

int read()

return x;

}struct nodedata[n*n*2];

int h[n],num,tt,s,a,b,t,x[n][4],y[n][4],t[n];bool flag[n];

double f[n];

inline

int calc(int x,int y)

inline

double calc1(int i,int j,int z)

inline

double calc2(int i,int k,int j,int z)

inline

void insert1(int x,int y,double z)

void spfa()}}

}} int main()

}for (int j=1;j<=3;++j) if (j!=id1&&j!=id2) id3=j;int id4=4;

x[i][4]=x[i][id1]+x[i][id2]-x[i][id3];y[i][4]=y[i][id1]+y[i][id2]-y[i][id3];

insert1(calc(i,id1),calc(i,id2),calc1(i,id1,id2)*t[i]);

insert1(calc(i,id1),calc(i,id3),calc1(i,id1,id3)*t[i]);

insert1(calc(i,id1),calc(i,id4),calc1(i,id1,id4)*t[i]);

insert1(calc(i,id2),calc(i,id3),calc1(i,id2,id3)*t[i]);

insert1(calc(i,id2),calc(i,id4),calc1(i,id2,id4)*t[i]);

insert1(calc(i,id3),calc(i,id4),calc1(i,id3,id4)*t[i]);

}for (int i=1;i<=s;++i)}}

}spfa();double ans=1e10;

for (int i=1;i<=4;++i)printf("%.1f",ans);

}return

0;}

luogu P1027 Car的旅行路線

題面傳送門 顯然這是一道spf aspfa spfa 水題,難點在建邊。題目中給三個點求另乙個點,那麼只要找到對角線,然後把另乙個點對稱過去就好了。實現 include include include include define min a,b a b a b using namespace st...

luogu P1027 Car的旅行路線

又到暑假了,住在城市a的car想和朋友一起去城市b旅遊。她知道每個城市都有四個飛機場,分別位於乙個矩形的四個頂點上,同乙個城市中兩個機場之間有一條筆直的高速鐵路,第i個城市中高速鐵路了的單位里程 為ti,任意兩個不同城市的機場之間均有航線,所有航線單位里程的 均為t。圖例 從上而下 機場 高速鐵路 ...

洛谷P1027 Car的旅行路線

又到暑假了,住在城市a的car想和朋友一起去城市b旅遊。她知道每個城市都有四個飛機場,分別位於乙個矩形的四個頂點上,同乙個城市中兩個機場之間有一條筆直的高速鐵路,第i個城市中高速鐵路了的單位里程 為ti,任意兩個不同城市的機場之間均有航線,所有航線單位里程的 均為t。圖例 從上而下 機場 高速鐵路 ...