Algo-Trian
This commit is contained in:
51
Algorithm/Graph/P5318 【深基18.例3】查找文献.cpp
Normal file
51
Algorithm/Graph/P5318 【深基18.例3】查找文献.cpp
Normal 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;
|
||||
}
|
||||
Reference in New Issue
Block a user