1726: 链式前向星
内存限制:128 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:5
解决:0
题目描述
#include <iostream> #include <vector> using namespace std; int n, m; vector<bool> vis;//标记 vector<int> head, nxt, to;//头,下一个结点下标,to记录边到达的结点 // C++ Version // head[u] 和 cnt 的初始值都为 -1 void add(int u, int v) {//头插法 nxt.push_back(head[u]);// 当前边的后继 head[u] = to.size();// 起点 u 的第一条边 to.push_back(v);// // 当前边的终点 } bool find_edge(int u, int v) { for (int i = head[u]; ~i; i = nxt[i]) { // ~i 表示 i != -1 if (to[i] == v) { return true; } } return false; } void dfs(int u) { if (vis[u]) return; vis[u] = true; cout<<u<<" "; for (int i = head[u]; ~i; i = nxt[i]) dfs(to[i]); } int main() { cin >> n >> m; vis.resize(n + 1, false);//初始化为0 head.resize(n + 1, -1);//初始化为-1 for (int i = 1; i <= m; ++i) { int u, v; cin >> u >> v; add(u, v); add(v,u) ; } dfs(1); return 0; }