【描述】
ack 是一家以生產計算機及其外設產品為主的高科技企業。不僅ack 的產品在國內領先,而且它的倉庫設計也獨具特色。由於生產的產品多種多樣,ack的倉庫是由若干個大小不等、形狀各異的子倉庫組成,每個倉庫有乙個入口(也是出口),座標為(xi,yi)。由於有些產品是互相關聯的,所以某些倉庫的入口之間通過地下通道相聯。(0,0)是地下通道的入口處。每次裝卸貨物時,倉庫的運輸車都要從(0,0)處進入地下通道,在通道中行駛一段距離後進入到某一子倉庫中裝卸貨物。但是最近運輸車出現了一點小毛病,那就是運輸車只能右轉彎,而不能左轉彎。這對運輸車在倉庫中運輸貨物並沒有什麼影響,但是由於地下通道的寬度有限,運輸車轉彎的角度不能超過180 (180度也不行)。在這種情況下,某些倉庫仍然是可到達的,但是有些倉庫卻是根本不能到達的。
例如在如上圖的例子中,如果運輸車的行駛路線為o—b—d—e—f—b—a(這條路線保證了運輸車不進行左轉彎),則可依次到達子倉庫b、d、e、f、a,但是無論運輸車如何選擇其他的路線,子倉庫c 都是不能到達的。
作為ack 的高階工程師,請你程式設計找出從o點可以到達的所有子倉庫。
注意:為保持倉庫的清潔,地下通道採用「管道」的形式(除入口和出口以外都是封閉的),所以即使倉庫i 和倉庫j 相連,倉庫k 的座標為(xk,yk)在(xi,yi)和(xj,yj)的連線上,當運輸車在從倉庫i 到倉庫j 的路線上時仍不能到達倉庫k。
【輸入格式】
輸入資料檔案名為line.in 。檔案的第一行為乙個整數n(n<=200),表示共有n個子倉庫。從第二行開始到第(n+1)行每行有兩個數xi,yi,(-50<=xi,yi
<=50)表示第i 個倉庫的座標。然後是乙個整數m(m<=100) ,表示共有m 條路線。接下來的m 行每行有兩個整數p、q,表示子倉庫p 和子倉庫q 有通道相連,在這裡通道是雙向的,即如果p 可以和q相連,那麼q 也一定和p 相連。其中倉庫的入口(0,0)用0 表示。
【輸出格式】
輸出檔案為line.out。將可能到達的子倉庫序號按公升序輸出到檔案中。輸入檔案中給出的資料保證至少有乙個可達子倉庫。
【樣例輸入】
0 41 2
2 42 3
3 22 1
0 21 2
1 42 4
3 44 5
5 62 6
【樣例輸出】
1 2 4 5 6
【分析】
題目就是乙個限定了條件的寬搜。
對於當前處理的點2,設上乙個點是1,判斷的點是3。可以進行擴充套件的條件是a×b>0或者a和b是同向共線向量。然後由於乙個點可能擴充套件到多次,但是乙個邊(有向)只能擴充套件到一次,利用這個來限制寬搜。原來用的限制方法是乙個點搜到一次……晚上躺床上突然就想出來了的說。好神奇。
#include #define maxn 210bool v[maxn][maxn];
struct ss
a[maxn];
int que[maxn*maxn];
struct sss
b[maxn];
int n,m,p,q,h,t;
int bl[maxn][maxn];
int tx,ty,nx,ny,tnode,nnode;
bool can[maxn];
bool ok(int x1,int y1,int x2,int y2)
int main()
while (h<=t)
else
for (int i=1;i<=bl[nnode][0];++i)
}++h;
}for (int i=1;i<=n;++i)
if (can[i]) printf("%d ",i);
return 0;
}
網頁設計的靈感
如果不是專業的人士,可能搞不清 建設和網頁設計的概念,可能會錯誤地理解成 建設就是網頁設計,其實並不是這樣,建設包括申請 網域名稱 建設 空間,然後是網頁設計,填充 內容,以及後期的發布運營和維護,而網頁設計只是單純地對網頁進行設計。那麼網頁設計 的好壞,使用者開啟 一眼就能看出來,所以網頁美觀性很...
45個激發靈感的平面網頁設計
目前,平面網頁設計是乙個真正的趨勢,這個有很好的理由來說明這個趨勢!不久前,流行在網頁設計中使用3d效果,表面紋理,光線和漸變效果的趨勢。然而,隨著時代的變遷,在網頁設計有了新的趨勢。現在的趨勢傾向於簡單的網頁設計布局,尤其是微軟的metro介面就是有名的例子。使用簡單,平面和印刷的設計元素,如高對...
45個激發靈感的平面網頁設計
目前,平面網頁設計是乙個真正的趨勢,這個有很好的理由來說明這個趨勢!不久前,流行在網頁設計中使用3d效果,表面紋理,光線和漸變效果的趨勢。然而,隨著時代的變遷,在網頁設計有了新的趨勢。現在的趨勢傾向於簡單的網頁設計布局,尤其是微軟的metro介面就是有名的例子。使用簡單,平面和印刷的設計元素,如高對...