SHOI2012 回家的路

2022-05-11 02:23:15 字數 1333 閱讀 5659

分層圖,每個轉彎定義為乙個操作,所以建立乙個上層全是x軸,下層全是y軸,兩層之間連一條權值為1的邊代表轉彎的代價。。挺簡單的其實

#include#include#include#include#include#includeusing namespace std;

typedef long long ll;

const int inf = 1e17 + 11;

const int maxn = 3e5 + 333;

const int n = 1e5 + 11;

ll dis[maxn];

int vis[maxn];

struct node g[maxn * 2];

int z;

int head[maxn];

void add(int be, int en, ll len)

bool operator <(const node a, const node b)

void dij(int be)

dis[be] = 0;

priority_queueque;

node ccc;

ccc.len = 0;

ccc.p = be;

que.push(ccc);

while (que.size())

} }return ;

}struct cn que[maxn];

bool cp1(cn a, cn b)

bool cp2(cn a, cn b)

int n, m;

int main()

scanf("%d%d", &que[s].x, &que[s].y);

scanf("%d%d", &que[t].x, &que[t].y);

que[s].id = s;

que[t].id = t;

int len = m + 2;

sort(que, que + len, cp1);

for (int i = 1; i < len; i++)

} sort(que, que + len, cp2);

for (int i = 1; i < len; i++)

} for (int i = 0; i < m; i++)

add(s, s + n, 0);

add(s + n, s, 0);

add(t, t + n, 0);

add(t + n, t, 0);

dij(s);

if (dis[t] >= 1e13 )

else

return 0;

}

SHOI2012 回家的路

shoi2012 d2t1 2046 年 oi 城的城市軌道交通建設終於全部竣工,由於前期規劃周密,建成後的軌道交通網路由2n2n條地鐵線路構成,組成了乙個nn縱nn橫的交通網。如下圖所示,這2n2n條線路每條線路都包含nn個車站,而每個車站都在一組縱橫線路的交匯處。出於建設成本的考慮,並非每個車站...

P3831 SHOI2012 回家的路 題解

題目傳送門 解法 1 每兩個點都連邊,跑裸的最短路。顯然,n 和 m 非常大,暴力連邊會 tle 和 mle。解法 2 正解 首先,對答案產生貢獻的只有換乘站,所以我們只用連兩種邊 乙個換乘站看作 2 個節點,連邊,邊權為 1 站內換乘 將 x 相等的換乘站相連,y 相等的換乘站相連。其中,起點和終...

題解 P3831 SHOI2012 回家的路

什麼叫分層圖最短路,我不會 kk 感覺自己做法和其他題解不大一樣所以過來發篇題解了。未刻意卡常拿下最優解 就是說給你乙個 n times n 的網格圖和 m 個可換乘點,然後你只能在同一行或同一列 如果在行上移動,就不能在列上移動 反之同理 上移動,除非這個點是可以換乘的。每次走一格花費 2 費,換...