1295 SCOI2009 最長距離

2021-08-04 20:21:15 字數 1090 閱讀 4421

題目鏈結

題目大意:給出一張地圖,上面有些點有障礙物,現在有t個機會能夠移除障礙物,問地圖上點對間的最長的歐幾里得距離

題解:由於答案由一對點確定,很容易想到列舉這一對點

記列舉的第乙個點為st,第二個點為ed,以st跑spfa,d[i]表示從st到i經過的最少的障礙數,對於每個ed,若d[ed]<=t,則更新答案

時間複雜度o(

n2m2

+nmk

e),列舉+spfa

實現上對點重新編號,因為我覺得這樣簡潔……

我的收穫:思維強啊,變通啊

#include 

#include

#include

#include

#include

#include

using

namespace

std;

#define inf 0x3f3f3f3f

#define f first

#define s second

#define pii pair

const

int m=10005;

const

int dx=;

const

int dy=;

int n,m,t,t,cnt;

int head[m],d[m],num[45][45];

bool vis[m],block[m];

char s[45];

pii g[m];

queue

q;struct edgee[m];

void add(int u,int v)

double calc(pii x,pii y)

void spfa(int st)}}

}void work()

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

}void init()

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

for(int j=1;j<=m;j++)

for(int k=1;k<=4;k++)

}int main()

BZOJ1295 SCOI2009 最長距離

time limit 10 sec memory limit 162 mb submit 1719 solved 935 submit status discuss windy 有一塊矩形土地,被分為 n m 塊 1 1 的小格仔。有的格仔含有障礙物。如果從格仔a可以走到格仔b,那麼兩個格仔的距離就...

BZOJ1295 SCOI2009 最長距離

給出乙個n m的矩陣,有障礙物,a,b 和 c,d 存在距離當且僅當兩個點能互相到達,且距離為歐幾里德距離 可以移走t個障礙物,求出距離最大的兩個點的距離 n,m這麼這麼小 直接o n2m2 跑最短路,水題 include include include include include using ...

bzoj1295 SCOI2009 最長距離

scoi2009 最長距離 time limit 10 sec memory limit 162 mbwindy有一塊矩形土地,被分為 nm 塊 11 的小格仔。有的格仔含有障礙物。如果從格仔a可以走到格仔b,那麼兩個格仔的距離就為兩個格仔中心的歐幾里德距離。如果從格仔a不可以走到格仔b,就沒有距離...