吝嗇的國度(超記憶體,未完成)

2021-07-25 14:23:31 字數 1308 閱讀 2275

時間限制:

1000 ms  |  記憶體限制:

65535 kb

難度:3

描述

在乙個吝嗇的國度裡有n個城市,這n個城市間只有n-1條路把這個n個城市連線起來。現在,tom在第s號城市,他有張該國地圖,他想知道如果自己要去參觀第t號城市,必須經過的前乙個城市是幾號城市(假設你不走重複的路)。

輸入第一行輸入乙個整數m表示測試資料共有m(1<=m<=5)組

每組測試資料的第一行輸入乙個正整數n(1<=n<=100000)和乙個正整數s(1<=s<=100000),n表示城市的總個數,s表示參觀者所在城市的編號

隨後的n-1行,每行有兩個正整數a,b(1<=a,b<=n),表示第a號城市和第b號城市之間有一條路連通。

輸出每組測試資料輸n個正整數,其中,第i個數表示從s走到i號城市,必須要經過的上乙個城市的編號。(其中i=s時,請輸出-1)

樣例輸入

1

10 1

1 91 8

8 10

10 3

8 61 2

10 4

9 53 7

樣例輸出

-1 1 10 10 9 8 3 1 1 8

這題目看起來就是乙個搜尋的問題,容易想到廣度,深度搜什麼的。(而且題目中說到n個城市只有n-1條通路來連線,所以看成圖的話,應該就是極小連通子圖了吧)對於a和b之間有通路的話,我會用鄰接矩陣的1表示,不通則為0.

下面的**隨便看看就好了,時間倉促,沒改進。(最後會給出較好的ac**)

#includeusing namespace std;

int map[100005][100005]; //用二維陣列表示鄰接矩陣,這個地方很糟糕,會導致記憶體**

int flag[100005]; //這個是用來記錄訪問過的城市

int pre; //pre是到達目的城市的先前城市

void findway(int v1,int v2,int n)

else

else

}} }

}int main()

} for(i=1;i<=n;i++)

} int main()

dfs(cur); //起點開始深搜

for(i = 1; i <= num; ++i)

printf("%d ", pre[i]); //每個節點的父節點都儲存在pri陣列,輸出即可

} return 0;

}

C 記憶體分配(未完成)

乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。後進先出 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os 注意它與資料結構中的堆是兩回事,分配方式倒是...

未完成的遊戲

半年前的某天,陽光穿過烏雲照射著滿是創痕的世界,我走在曾經熟悉的靜謐的寒冷的恐懼的街道。並沒有先前設想的那樣來一陣狂歡,大概是意識到了人生短暫,不應該花費過多精力在慶祝上。高考遠沒有預期的那樣滿意,不過我還是舒了一口氣,終於結束了。2015年的9月,寒雪社群掛上這樣一句話 由於種種原因,論壇暫時關閉...

未完成的工作

1 上下文不明確,需要明確重啟的場景,什麼情況下需要重啟?重啟是完成什麼功能的,配置生效?2 執行分析沒有串起來,從使用者下發重啟mml命令,到後台整個集群如何逐步完成重啟,操作結果如何展示給使用者 3 規格沒有明確,重啟多長時間完成?4 一些規格限制沒有明確,如mml必須先返回操作結果 5 異常場...