P5001 魔法祝福

2022-08-12 21:48:20 字數 1045 閱讀 1531

遇到這種題目就想到了bfs,但是狀態會不會太多了啊?

我們可以借助noip2017pjt3「棋盤」的思想,用spfa搞掉。

我們同樣搞乙個vis陣列,dist陣列,在佇列裡面自己搞個結構體或者pair。

然後就可以類似於spfa那樣寫出來乙個奇怪的程式了。

不知道為什麼,我死活會t掉幾個點只有80pts,看了標程也不知道我錯在**,我太弱了。

日後如果這道題的題解豐富起來我應該會來補鍋。

**:(80pts的程式)

// luogu-judger-enable-o2

#include#include#include#includeconst int maxn = 1000005;

struct edges

e[maxn << 1];

int head[maxn], tot;

struct nodes

};bool vis[maxn];

int dist[maxn];

int n, m, s, t;

int read()

while(ch >= '0' && ch <= '9') ans = ans * 10 + ch - '0', ch = getchar();

return s * ans;

}void link(int u, int v, int t, int k)

; head[u] = tot;

}int main()

memset(dist, 0x3f, sizeof dist);

std::queueq;

dist[s] = 0;

q.push(nodes(s, 0)); vis[s] = true;

while(!q.empty())}}

}if(dist[t] == 0x3f3f3f3f) printf("bao 0\n");

else printf("%d\n", dist[t]);

return 0;

}

P2801 教主的魔法

題目描述 這裡 思路 這題似乎是道分塊裸題。在查詢時,我們可以對每個塊進行排序,然後二分查詢 k的元素,輸出答案。不幸的是,這道題有點卡分塊。我們可以改變塊的大小和加入優化進行卡常。include pragma gcc optimize 2 pragma gcc optimize 3 pragma ...

洛谷 P2387 魔法森林

題目描述 為了得到書法大家的真傳,小 e 同學下定決心去拜訪住在魔法森林中的隱 士。魔法森林可以被看成乙個包含 n 個節點 m 條邊的無向圖,節點標號為 1,2,3,n,邊標號為 1,2,3,m。初始時小 e 同學在 1 號節點,隱士則住在 n 號節點。小 e 需要通過這一片魔法森林,才能夠拜訪到隱...

洛谷 P2387 魔法森林

為了得到書法大家的真傳,小 e 同學下定決心去拜訪住在魔法森林中的隱 士。魔法森林可以被看成乙個包含 n 個節點 m 條邊的無向圖,節點標號為 1,2,3,n,邊標號為 1,2,3,m。初始時小 e 同學在 1 號節點,隱士則住在 n 號節點。小 e 需要通過這一片魔法森林,才能夠拜訪到隱士。魔法森...