dfs和bfs的入門學習題目
使用set儲存每個點可達的邊,自動對每個點可達的點進行排序,減少後續遍歷sort的耗時。
使用遞迴來進行dfs,使用佇列queue來進行bfs
#include #include #include #include #include #include #include using namespace std;
inline int read()//如果輸入
while (ch >= '0'&&ch <= '9') s = s * 10 + ch - '0', ch = getchar();//輸入數字並統計
return s*w;//輸出結果
}queueqlist;
bool bisuse[100005];
setsetnode[100005];
void dfs(int i)
}void bfs(int i)
} qlist.pop();
} if (bisuse[i])return;
printf("%d ", i);
bisuse[i] = true;
int isize = setnode[i].size();
set::iterator it = setnode[i].begin();
for (; it != setnode[i].end(); it++) }
int main()
memset(bisuse, false, sizeof(bisuse));
dfs(1);
printf("\n");
memset(bisuse, false, sizeof(bisuse));
bfs(1);
return 0;
}
洛谷 P5727 深基5 例3 冰雹猜想
題目描述 給出乙個正整數 n n 100 然後對這個數字一直進行下面的操作 如果這個數字是奇數,那麼將其乘 3 再加 1,否則除以 2。經過若干次迴圈後,最終都會回到 1。經過驗證很大的數字 7 10 11 都可以按照這樣的方式比變成 1,所以被稱為 冰雹猜想 例如當 n 是 20,變化的過程是 2...
洛谷P2249 深基13 例1 查詢 二分
題目鏈結 是個好題目,和平時的二分不同的是,這個需要找到lower bound 的結果。那麼就二分到只有乙個數的時候再判斷,否則x a mid 就搜左邊,x a mid 就搜右邊,就可以實現lower bound 的效果。如下,仔細品味 include include include include...
洛谷 P5719 深基4 例3 分類平均
題目描述 給定n n 10000 和k k 100 將從 1 到 n 之間的所有正整數可以分為兩類 a 類數可以被 k 整除 也就是說是 k 的倍數 而 b 類數不能。請輸出這兩類數的平均數,精確到小數點後 1 位,用空格隔開。資料保證兩類數的個數都不會是 0。輸入格式 無輸出格式 無輸入輸出樣例 ...