ZOJ_Utopia_?
来源:互联网 发布:网络代理销售合作协议 编辑:程序博客网 时间:2024/06/07 00:40
#include<iostream> #include<sstream> #include<string> #include<vector> #include<list> #include<set> #include<map> #include<stack> #include<queue> #include<algorithm> #include<cmath> #pragma warning(disable:4996) using namespace std;class Tree{public:map<int, int>edge;vector<vector<int>>adjList;vector<int>depth;vector<bool>isRoot;Tree(const int &node_num){adjList.resize(node_num + 1);depth.resize(node_num + 1);isRoot.resize(node_num + 1, true);for (int i = 0; i != node_num - 1; i++){int parent, child; cin >> parent >> child;auto iter = edge.find(child);if (iter == edge.end()){edge.insert(make_pair(child, parent));}else{edge.insert({parent,child});}adjList[parent].push_back(child);isRoot[child] = false;}for (int root = 0; true; root++){if (isRoot[root]){depth[root] = 1;DFS(root, 2);break;}}}void DFS(int i, int curDepath){for (size_t j = 0; j != adjList[i].size(); j++){depth[adjList[i][j]] = curDepath;DFS(adjList[i][j], curDepath + 1);}}int getLCA(const int &node1, const int &node2){int ancestor1 = node1, ancestor2 = node2;while (ancestor1 != ancestor2){if (depth[ancestor1]<depth[ancestor2]){ancestor2 = edge[ancestor2];}else{ancestor1 = edge[ancestor1];}}return ancestor1;}int getDist(const int &node1, const int &node2){return depth[node1] + depth[node2] - 2 * depth[getLCA(node1,node2)];}};int main(){//freopen("input.txt", "r", stdin); //freopen("output.txt", "w", stdout); int n,count=0;while (cin >> n){if (count){cout << endl;}printf("Case %d:\n",++count);Tree tree(n);int m; cin >> m;while (m--){int A, B, C; cin >> A >> B >> C;if (tree.getDist(A,C)+tree.getDist(B,C)==tree.getDist(A,B)){cout << "Yes" << endl;}else{cout << "No" << endl;}}}return 0;}
0 0
- ZOJ_Utopia_?
- OC学习第三天
- 超越之Hudson配置
- zeppelin源码分析(5)——notebook的持久化
- sql无法连接远程数据库 sqlserver不存在或拒绝访问 解决方案
- 6.0运行时权限
- ZOJ_Utopia_?
- sql表没有自增列,插入自增列值
- sql时间
- C#—实验10.3—工具栏和状态栏
- sqlserver 各种判断是否存在(表名、函数、存储过程....)
- Spring---Spring之初步体验
- listView、gidView和spinner
- sqlserver级联更新和删除c#调用存储过程返回值
- 栈——valid-parentheses 判断括号序列是否有效