有q個單向傳送陣,每個傳送陣各有乙個入口和乙個出口,入口和出口都在迷宮的格仔裡,當走到或被傳送到乙個有傳送陣入口的格仔時,小明可以選擇是否開啟傳送陣。如果開啟傳送陣,小明就會被傳送到出口對應的格仔裡,這個過程會花費3秒;如果不開啟傳送陣,將不會發生任何事情,小明可以繼續向上下左右四個方向移動。
乙個格仔可能既有多個入口,又有多個出口,小明可以選擇任意乙個入口開啟傳送陣。使用傳送陣是非常危險的,因為有的傳送陣的出口在陷阱裡,如果小明使用這樣的傳送陣,那他就會死亡。也有一些傳送陣的入口在陷阱裡,這樣的傳送陣是沒有用的,因為小明不能活著進入。請告訴小明活著到達目的地的最短時間。
有多組資料。對於每組資料:第一行有三個整數n,m,q(2≤ n,m≤300,0≤ q ≤ 1000)。
接下來是乙個n行m列的矩陣,表示迷宮。
最後q行,每行四個整數
表示乙個傳送陣的入口在x1
行y1
列,出口在x2
行y2
列。
如果小明能夠活著到達目的地,則輸出最短時間,否則輸出-1。示例1
5 5 1..s..
.....
.###.
.....
..t..
1 2 3 3
5 5 1
..s..
.....
.###.
.....
..t..
3 3 1 2
5 5 1
s.#..
..#..
###..
.....
....t
0 1 0 2
4 4 2
s#.t
.#.#
.#.#
.#.#
0 0 0 3
2 0 2 2
68-13bfs,注意,可能通過不止乙個傳送陣
#include #include#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#pragma comment(linker, "/stck:1024000000,1024000000")
#define lowbit(x) (x&(-x))
#define max(x,y) (x>=y?x:y)
#define min(x,y) (x<=y?x:y)
#define max 100000000000000000
#define mod 1000000007
#define pi acos(-1.0)
#define ei exp(1)
#define pi 3.1415926535897932384626433832
#define ios() ios::sync_with_stdio(true)
#define inf 0x3f3f3f3f
#define mem(a) ((a,0,sizeof(a)))typedef
long
long
ll;struct
node
;
bool
operator
}ans,pos;
int dir[4][2]=,,,};
intn,m,k,xs,ys;
int dis[306][306
];char a[306][306
];int
xa,xb,ya,yb;
vector
vis[306][306
];int bfs(int u,int
v) }
for(int i=0;i<4;i++)}}
return -1;}
intmain()
}for(int i=0;i)
int cnt=bfs(xs,ys);
printf(
"%d\n
",cnt);
}return0;
}#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#pragma comment(linker, "/stck:1024000000,1024000000")
#define lowbit(x) (x&(-x))
#define max(x,y) (x>=y?x:y)
#define min(x,y) (x<=y?x:y)
#define max 100000000000000000
#define mod 1000000007
#define pi acos(-1.0)
#define ei exp(1)
#define pi 3.1415926535897932384626433832
#define ios() ios::sync_with_stdio(true)
#define inf 0x3f3f3f3f
#define mem(a) ((a,0,sizeof(a)))typedef
long
long
ll;struct
node
;
bool
operator
}ans,pos;
int dir[4][2]=,,,};
intn,m,k,xs,ys;
int dis[306][306
];char a[306][306
];int
xa,xb,ya,yb;
vector
vis[306][306
];int bfs(int u,int
v) }
for(int i=0;i<4;i++)}}
return -1;}
intmain()
}for(int i=0;i)
int cnt=bfs(xs,ys);
printf(
"%d\n
",cnt);
}return0;
}
2023年湘潭大學程式設計競賽
a 時間統計 某個實驗需要統計時間,記錄了實驗開始和結束的時間,計算實驗用了多少秒。第一行輸入乙個整數n,表示樣例個數。接下來每組樣例兩行,表示開始時間和結束時間,格式為xdayhh mm ss,x是乙個整數表示第幾天,0 x 20000,hh表示小時,mm表示分鐘,ss表示秒,保證時間合法,結束時...
2023年湘潭大學程式設計競賽 A題
今晚6點跟隊友去打這個比賽,因為第二天有考試,所以沒有打到結束,打了兩個小時就匆匆回宿舍複習了。題目感覺有難的,有簽到題,直接說題吧 時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 某個實驗需要統計時間,記錄了實驗開...
2023年湘潭大學程式設計競賽 C Boom
時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 緊急事件!戰場內被敵軍埋放了n枚炸彈!我軍情報部門通過技術手段,掌握了這些炸彈的資訊。這些炸彈很特殊,每枚炸彈的波及區域是乙個矩形。第i枚炸彈的波及區域是以點 x i1...