//做法略暴力 #include <iostream> using namespace std; int n,a[101][101],l[101],r[101]; void edit(int x) //编辑结点x { int last=0; //上一个x的子结点 for (int i=1;i<=n;++i) if (a[x][i]) { if (last) { //若不是第一个结点 a[x][i]=0; a[last][i]=1; r[last]=i; } //连接上一个结点与该结点,该结点作为上一个结点的右儿子 else l[x]=i; //第一个结点作为父结点的左儿子 last=i; edit(i); //递归的编辑结点i } } int main() { cin>>n; for (int i=1;i<=n;++i) { int t,x; cin>>t; for (int j=0;j<t;++j) { cin>>x; if (x) a[i][x]=1; } } edit(1); cout<<n<<endl; for (int i=1;i<=n;++i) cout<<l[i]<<' '<<r[i]<<endl; return 0; }
4
11
2015
11
2015
XJOI 1043 二叉树转化
4
11
2015
11
2015
XJOI 1003 质因数分解
//学军OJ首杀撒花!!^_^ #include <iostream> #include <cmath> using namespace std; int main() { long long n; cin>>n; int x=0; while (n%2==0) { ++x; n/=2; } if (x==1) cout<<"2*"; else if (x) { cout<<2<<'^'<<x; if (n!=1) cout<<'*'; } //处理质因数为2的情况 for (int i=3;i<=n;i+=2)//因为偶质数只有2,所以只考虑奇数 { x=0; while (true) { if (n%i==0) { ++x; n/=i; } else { if (x==0) break; if (x==1) cout<<i; else cout<<i<<'^'<<x; if (n!=1) cout<<'*'; break; } } } return 0; }