博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SPOJ #442 Searching the Graph
阅读量:4509 次
发布时间:2019-06-08

本文共 1781 字,大约阅读时间需要 5 分钟。

Just CS rookie practice on DFS\BFS. But details should be taken care of:

1. Ruby implementation got TLE so I switched to C++

2. There's one space after each output node, including the last one. But SPOJ doesn't clarify it clearly.

// 442#include 
#include
#include
#include
#include
using namespace std;typedef map
> Graph;void bfs(Graph &g, int key){ vector
visited; visited.reserve(g.size()); for(unsigned ic = 0; ic < g.size(); ic ++) { visited[ic] = 0; } queue
fifo; fifo.push(key); while(!fifo.empty()) { int cKey = fifo.front(); fifo.pop(); if(visited[cKey - 1] == 0) { cout << cKey <<" "; vector
&ajVec = g[cKey]; for(unsigned i = 0; i < ajVec.size(); i ++) { fifo.push(ajVec[i]); } visited[cKey - 1] = 1; } } cout << endl;}vector
dfs_rec;void initDfsRec(Graph &g){ dfs_rec.clear(); unsigned gSize = g.size(); dfs_rec.reserve(gSize); for(unsigned ic = 0; ic < gSize; ic ++) { dfs_rec[ic] = 0; }}void dfs(Graph &g, int key){ cout << key << " "; dfs_rec[key - 1] = 1; vector
&ajVec = g[key]; for(unsigned i = 0; i < ajVec.size(); i ++) { if(dfs_rec[ajVec[i] - 1] == 0) { dfs(g, ajVec[i]); } }}int main(){ int runcnt = 0; cin >> runcnt; for(int i = 0; i < runcnt; i ++) { Graph g; int nvert = 0; cin >> nvert; for(int n = 0; n < nvert; n ++) { int vid = 0; cin >> vid; int cnt = 0; cin >> cnt; vector
ajVec; for(int k = 0; k < cnt; k ++) { int aj = 0; cin >> aj; ajVec.push_back(aj); } g.insert(Graph::value_type(vid, ajVec)); } // cout << "graph " << i +1 << endl; int ikey = 0, iMode = 0; cin >> ikey >> iMode; while(!(ikey == 0 && iMode == 0)) { if(iMode == 0) { initDfsRec(g); dfs(g, ikey); cout <
> ikey >>iMode; } } return 0;}
View Code

 

转载于:https://www.cnblogs.com/tonix/p/3541313.html

你可能感兴趣的文章
●洛谷P1291 [SHOI2002]百事世界杯之旅
查看>>
软工网络15团队作业2——团队计划
查看>>
MySQL--创建用户
查看>>
isIos
查看>>
js+canvas实现滑动拼图验证码功能
查看>>
华为ensp工具栏丢失解决方法
查看>>
静态网页中的使得文字向上一直滚动,中间不间断。
查看>>
MySQL常见错误代码说明
查看>>
innobackupex 相关语法讲解【转】
查看>>
pt-table-sync同步报错Called not_in_left in state 0 at /usr/bin/pt-table-sync line 5231【原创】...
查看>>
jooq使用示例
查看>>
属性参数
查看>>
AQS独占式同步队列入队与出队
查看>>
修改原代码定制bootstrap
查看>>
idea快捷键
查看>>
shell——bash在线编辑
查看>>
Kth Smallest Element in a BST
查看>>
iOS开发从新手到App Store上架
查看>>
poj--2516--Minimum Cost(最小费用流)
查看>>
ZXV10 H608B V1.1.04T02_JS破解
查看>>