SCOI2009 最長距離 最短路

2021-10-03 18:03:28 字數 1234 閱讀 1405

注意,『0』號格仔是可以走的,『1』是用來隔斷的。

然後,要確定最長距離,我們可以考慮成乙個點到另乙個點的最少需要搬掉幾個障礙物才可以,那麼問題可以轉變成最短路問題,然後在乙個個的去查詢即可。

時間複雜度

#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define lowbit(x) ( x&(-x) )

#define pi 3.141592653589793

#define e 2.718281828459045

#define inf 0x3f3f3f3f

#define eps 1e-8

#define half (l + r)>>1

#define lsn rt<<1

#define rsn rt<<1|1

#define lson lsn, l, mid

#define rson rsn, mid+1, r

#define ql lson, ql, qr

#define qr rson, ql, qr

#define myself rt, l, r

#define mp(a, b) make_pair(a, b)

using namespace std;

typedef unsigned long long ull;

typedef unsigned int uit;

typedef long long ll;

const int maxn = 33;

const int dir[4][2] =

;int n, m, k;

char mp[maxn][maxn];

inline int _id(int x, int y)

inline bool in_map(int x, int y)

int dis[maxn][maxn];

bool inque[maxn][maxn];

queue> q;

inline void spfa(int x, int y)}}

}}int main()}}

}printf("%.6lf\n", ans);

return 0;

}

SCOI2009 最長距離

windy有一塊矩形土地,被分為 nm 塊 11 的小格仔。有的格仔含有障礙物。如果從格仔a可以走到格仔b,那麼兩個格仔的距離就為兩個格仔中心的歐幾里德距離。如果從格仔a不可以走到格仔b,就沒有距離。如果格仔x和格仔y有公共邊,並且x和y均不含有障礙物,就可以從x走到y。如果windy可以移走t塊障...

1295 SCOI2009 最長距離

題目鏈結 題目大意 給出一張地圖,上面有些點有障礙物,現在有t個機會能夠移除障礙物,問地圖上點對間的最長的歐幾里得距離 題解 由於答案由一對點確定,很容易想到列舉這一對點 記列舉的第乙個點為st,第二個點為ed,以st跑spfa,d i 表示從st到i經過的最少的障礙數,對於每個ed,若d ed t...

scoi2009 圍豆豆(最短路模型)

洛谷題面 由每個豆子引一條射線,與射線交點個數為奇數相當於多邊形圍住了它,這樣可以定義乙個狀態f x y s 表示從起點出發,走到 x,y 處時的路徑與d顆豆子引出的射線相交的奇偶性狀態為s,最少需多少步。然後跑最短路轉移即可。然而,有乙個小問題就是轉移時如何判與豆子引出的射線相交。如果單純按與線相...