HDU 4707 最後還是用了BFS。。。

2021-06-21 17:16:25 字數 1282 閱讀 3951

題目大意就是給你乙個連通圖,保證沒有環,讓你計算所有點到點0的距離,如果距離大於d,sum++;最後輸出sum的值。

一開始被嚇到了,還以為是搜尋樹。。後來洗了把臉後發現題目本質還是把所有的點遍歷一遍(就是bfs    ...orz)

沒腦子的就直接寫去了。。

結果第一發記憶體超了。。難掩我的震驚之情。。orz

題目要求memory limit:

32768

kb,我好像用了37560k ,2333333333

//果然單純的佇列是沒有好結果的。。虧我還打了vector..

// 壞毛病要改,一直不會讓queue和vector在一起 =v=

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

struct str ;

queueq[100005];

queueq;

int main()

s.next=0;

q.push(s);

struct str node;

while(!q.empty())

}while(!q[s.next].empty())

}printf("%d\n",sum);

} }return 0;

}

後來還是死性不改的只用了vector,結果過了233  下面ac**:

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

vectorq[100005];//存邊沒什麼好說的

vectorq[100005];//q[i]表示q[i]中的所有的點到點0的距離為i

int main()

sum = 0;

scanf("%d%d",&n,&d);

n--;

while(n--)

next=0;

q[0].push_back(next);

int cnt = 0;

int count = 1;

for(int i = 0;i < q[cnt].size(); i++)

if(count == n)break;

if(i ==q[cnt].size()-1)

}for(int i = d+1;i < 100005; i++)

printf("%d\n",sum);

} }return 0;

}

HDU 4707 Pet 鄰接表實現

解題報告 題目大意是在無向圖g中有n個點,分別從0 到n 1編號,然後在這些點之間有n 1條邊,可以保證這個圖是連通圖,並且每條邊的長度都是1,然後讓你求出從編號為0的點出發,到其它的點的距離大於d的點的個數。這題的點的個數有500000個,而記憶體限制為32m,很顯然,開鄰接矩陣不行,但這題實際上...

U盤恢復(最後的最後還是量產)

前天,我的寶貝u盤突然壞了,真是壞的莫名其妙,上午我還用它列印東西,下午就出問題。最開始的問題 u盤裡所有檔案變成ddd.ddd。每個檔案都是這樣,不明格式,1.06g 你在逗我!原來的檔案都看不到了。因為u盤裡有重要 不敢格式化,然後從晚上尋找解決辦法。基本有兩種說法,一種是u盤中毒 一種是u盤硬...

最後想的還是你啊

狹長,較窄的一條小河,弟弟在小河裡面邊游泳邊擺手呼喊著岸上的哥哥,而岸上的哥哥一臉笑意,祥和的一幕也是平常的一幕。一條大魚突然出現衝撞了弟弟一下,瞬間發生的事情讓人措手不及,但是哥哥清楚的預感到接下來會發生些什麼事情,他大聲呼叫著弟弟讓他垂直的游向河岸,那樣才是最短路徑,才能讓他弟弟以最短的時間遊上...