URAL 1069. Prufer Code 读懂题意逆推模拟
来源:互联网 发布:茂日软件下载 编辑:程序博客网 时间:2024/06/06 21:43
这个题关键是读懂题目意思:一棵树,结点按照1--N编号,然后删除当前度数为1的结点中标号最小的一个结点,同时写下这个结点相关联的点的标号,重复这一动作,一直到只剩下一个结点为止。样例解释:
输出的有2 1 6 2 6,说明1,2,,6这三个结点肯定不是度数为1 的,第一个叶子删的一定是3,并且3和2相连,然后后面剩下的是1 2 6说明删除的是4,4和1相连,这时候剩下的是2 6 同时3,4已经被删除,那么下一步删的一定就是1了,(因为这时候剩下的叶子有1 和5,1最小),和1连的是6,同理。
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<vector>#define MAXN 7510using namespace std;int main(){ // freopen("in.txt","r",stdin); vector<int>st[MAXN]; int vis[MAXN],root[MAXN],a,num=0,i,j; memset(vis,0,sizeof(vis)); while(cin>>a) { vis[a]=1; root[++num]=a; } for(i=1; i<=num; i++) { for(j=1; j<=num+1; j++) { if(vis[j]==0) break; } st[root[i]].push_back(j); st[j].push_back(root[i]); int flag=1; for(int k=i+1; k<=num; k++) { if(root[k]==root[i]) { flag=0; break; } } if(flag) vis[root[i]]=0; vis[j]=-1; } for( i=1; i<=num+1; i++) { cout<<i<<":"; sort(st[i].begin(),st[i].end()); for(j=0; j<(int)st[i].size(); j++) cout<<" "<<st[i][j]; cout<<endl; } return 0;}
- URAL 1069. Prufer Code 读懂题意逆推模拟
- ural 1069. Prufer Code
- ural 1069. Prufer Code
- URAL 1069 Prufer Code
- URAL - 1069 Prufer Code (图的重建)
- URAL 1069 Prufer Code 树结构脑洞题
- prufer code
- URAL1069 Prufer Code
- Prufer Code
- URAL 1718. Rejudge 题意讲解
- 第七届河南省赛zzuoj 10395: G.Code the Tree (模拟)prufer数列
- HDU 4740 模拟题意
- UVA11624 Fire! 两次BFS 读懂题意很重要
- URAL 递推
- URAL 1225 递推
- HDU 4930 Fighting the Landlords (超级暴力+读懂题意)
- 栈的利用,这题主要读懂题意
- ural 1007 Code Words
- hdu 1555 How many days?
- IOS开发之tableview只选中一行
- HDU 3333 & 3874 (线段树+离线询问)
- Java反射 根据不同方法名动态调用不同的方法
- env script
- URAL 1069. Prufer Code 读懂题意逆推模拟
- ExtJS(3)--Ext.Window
- Travel Plan
- 基于RMAN从活动数据库异机克隆(rman duplicate from active DB)
- 用两个栈实现队列
- CopyU!v2.2 增加对设备信息的识别
- Android动画学习笔记-Android Animation
- Call requires API level 14 (current min is 10)
- 解读ClassLoader