題意:在二維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 表示加在最後面 ...