Algo-Trian

This commit is contained in:
e2hang
2025-09-21 12:21:50 +08:00
parent 24522486f1
commit 3bde00039c
25 changed files with 842 additions and 0 deletions

View File

@@ -0,0 +1,51 @@
#include <iostream>
#include <algorithm>
#include <vector>
#include <deque>
using namespace std;
vector<vector<int>> adj;
vector<bool> used;
//
void dfs(int idx){
if(used[idx]) return;
used[idx] = true; // <20><><EFBFBD><EFBFBD><EFBFBD>ѷ<EFBFBD><D1B7><EFBFBD>
cout << idx + 1 << " ";
for(auto x : adj[idx]){
dfs(x);
}
}
int main(){
int v, e;
cin >> v >> e;
adj.resize(v);
used.resize(v, false);
for(int i = 0; i < e; i++){
int a, b;
cin >> a >> b;
adj[a - 1].push_back(b - 1);
}
for(int i = 0; i < v; i++){
sort(adj[i].begin(), adj[i].end());
}
dfs(0);
fill(used.begin(), used.end(), false);
cout << endl;
//bfs
deque<int> q;
q.push_back(0);
used[0] = true;
while(!q.empty()){
int top = q.front(); q.pop_front(); // ע<><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> front()
cout << top + 1 << " ";
for(auto x : adj[top]){
if(!used[x]){
used[x] = true; // <20><><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>
q.push_back(x);
}
}
}
return 0;
}