題意:
有一層不超過100層的大樓, 有n個電梯,它們的速度都不同。 而且每個電梯只能到達指定的那些樓層,而且它們都有各自的速度(即上公升一層或下降一層所用的時間)。 如果乙個人在某層走出電梯,要換乙個電梯乘,那麼他要等60秒(不管要等的是那個電梯,即使是剛剛出來的那個電梯也要等60秒)。在0層搭電梯出發時不需要等待。
乙個人從0層開始,目的地是k層, 現在要搭這些電梯,問最少需多少時間。
思路:建圖,最短路
#include #include #include #include #include #define fi first
#define se second
#define pii pairusing namespace std;
const int inf = 0x3f3f3f3f;
typedef long long ll;
const int maxn = 100+5;
int n, k, done[maxn], dis[maxn], t[maxn], w[maxn][maxn];
vectorvec[maxn];
// 圖
struct edge
};vectoredges;
vectorg[maxn];
void init(int a)
void addedge(int u, int v)
struct node
bool operator < (const node& rhs) const
};int dijkstra(int s ,int t)
} }return dis[t];
}int main()
while((ch = getchar()) != '\n');
} // 建圖
for(int p = 0; p < n; ++p)
}} int s = 0, t = k;
int ans = dijkstra(s, t);
if(ans == inf) printf("impossible\n");
else printf("%d\n",ans);
//printf("%d %d",vec[0].size(), vec[1].size());
} return 0;
}
uva10801 最短路問題
題目大意 有一層不超過100層的大樓,有n個電梯,它們的速度都不同。而且每個電梯只能到達指定的那些樓層,而且它們都有各自的速度 即上公升一層或下降一層所用的時間 如果乙個人在某層走出電梯,要換乙個電梯乘,那麼他要等60秒 不管要等的是那個電梯,即使是剛剛出來的那個電梯也要等60秒 在0層搭電梯出發時...
uva10986 最短路徑
題目的意思就是 首先給出有幾組測試樣例 每組樣例先是 給 n 點的個數 m 邊的個數 s 起點 t 終點 然後是每條邊 以及權值.求最短路.但是因為點的數量很多,要用優化的dijkstra 優先佇列.劉汝佳書裡的模板差別只有這題是無向圖.include include include include...
uva 10246(最短路變形)
思路 spfa求出每個點到其餘頂點的最短路 最短路上的每個點的val都小於等於起點的val 然後又二維陣列dp來儲存,最後詢問的時候就是列舉中間點i了,min 1 include2 include3 include4 include5 include6 include7 using namespac...