HDU 1401 Solitaire (雙向廣搜)

2021-06-22 12:58:54 字數 901 閱讀 9227

題意:在二維8*8的方格,給定4個初始點和4個最終點,問在8步內是否能從初始點走到最終點,

雙向廣搜:同時對初始點和最終點廣搜4步,對每一步記錄狀態,初始點為『1』,最終點為『2』,

若在限定時間內初始點的狀態能到達『2』,或最終點的狀態能到達『1』,則為yes!要記得排序。。

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

struct point

};struct node

s,e;

int dir[4][2]=,,,};

int mat[10][10];

bool cmp(point a,point b)//排序

sort(v.p,v.p+4,cmp);

if(get_vis(v)=='1') continue;

else if(get_vis(v)=='2') return true;//可以到達終點

make_vis(v,'1');

q.push(v);}}

} if(!t.empty())

sort(v.p,v.p+4,cmp);

if(get_vis(v)=='1') return true;

else if(get_vis(v)=='2') continue;

make_vis(v,'2');

t.push(v);}}

} }return false;

}int main()

sort(s.p,s.p+4,cmp);

sort(e.p,e.p+4,cmp);

bfs()?puts("yes"):puts("no");

} return 0;

}

HDU 1401 Solitaire(雙向廣搜)

第一次做雙向廣搜,這花的時間真是夠久的。看別人部落格,在知道要把棋子排序之後思路就很清晰了,但是 實現不了 原因是我把一對中間變數放到迴圈外面了還看不出來!而且在 只相差變數名字的時候,複製完了總忘記改名字!細心啊,細心啊!不耐心一點好好地寫 才會浪費更多的時間!這個悲慘的故事教會我,能直接給目標變...

HDU 4587 邊雙聯通

題意 給你n個點,m條邊,要你刪除兩個點以及和這兩個點直接相連的邊,問你剩下的圖中,最大的連通分量的數目。分析 我們可以列舉每個點,然後看剩下的圖中是否有割點,這裡需要注意,乙個單獨的連通分量刪除就沒有了,坑點在這裡!include include include include include u...

hdu6375 雙端佇列

problem description 度度熊正在學習雙端佇列,他對其翻轉和合併產生了很大的興趣。初始時有 n 個空的雙端佇列 編號為 1 到 n 你要支援度度熊的 q 次操作。1 u w val 在編號為 u 的佇列裡加入乙個權值為 val 的元素。w 0 表示加在最前面,w 1 表示加在最後面 ...