sgu122 分类: sgu 2015-02-15 11:39 71人阅读 评论(0) 收藏
2015-02-15 11:39
281 查看
构造题
改图满足Ore性质,是个很强的性质
1>先随机找到一条链。
2>如果这条链长度小于n,通过变换使其变成环(根据Ore性质可证明可行),
然后,选取不在环中的结点,找到相应位置,将环断开形成链,再将结点插入这条链,
不断重复这个过程直到链的长度等于n
3>通过变换使链变成环,输出路径
改图满足Ore性质,是个很强的性质
1>先随机找到一条链。
2>如果这条链长度小于n,通过变换使其变成环(根据Ore性质可证明可行),
然后,选取不在环中的结点,找到相应位置,将环断开形成链,再将结点插入这条链,
不断重复这个过程直到链的长度等于n
3>通过变换使链变成环,输出路径
#include<stdio.h> #include<stdlib.h> #include<stdbool.h> #include<string.h> #define MAXN 1005 #define SIZE 10005 int n; bool mp[MAXN][MAXN]={false}; char ch[SIZE]={'\0'}; int cl; bool hash[MAXN]={false}; int head,tail;int pre[MAXN]={false},sur[MAXN]={false}; int wl=0; int numch(int l,int r) { int i,ret=0; for(i=l;i<=r;i++) { ret*=10; ret+=ch[i]-'0'; } return ret; } void dfs(int a) { int i; hash[a]=true;wl++;tail=a; for(i=1;i<=n;i++) if(mp[a][i]==true && hash[i]==false) {sur[a]=i,pre[i]=a;dfs(i);return;} } void roll() { int j,p,k,tmp; for(j=head;sur[j]!=false;j=sur[j]) if(mp[j][tail]==true && mp[head][sur[j]]==true) { p=sur[j]; sur[j]=tail; pre[head]=p; // tail~p for(k=tail;;k=sur[k]) { tmp=pre[k]; pre[k]=sur[k]; sur[k]=tmp; if(k==p)break; } pre[tail]=j; sur[p]=head; return; } } void find() { int i,j,k; for(i=1;i<=n;i++) if(hash[i]==false) for(j=1;j<=n;j++) if(mp[i][j]==true && hash[j]==true) { head=i;tail=pre[j]; hash[i]=true;wl++; sur[pre[j]]=false; pre[j]=i; sur[i]=j; return; } } int main() { int i,j,q; #ifndef ONLINE_JUDGE freopen("sgu122.in","r",stdin); freopen("sgu122.out","w",stdout); #endif scanf("%d",&n); for(q=1;q<=n;q++) { while(scanf("%s",ch)!=EOF) { mp[q][numch(0,strlen(ch)-1)]=true; if(getchar()=='\n')break; } } head=1; dfs(1); while(wl<n) { roll(); find(); } roll(); printf("1 "); for(i=sur[1];i!=1;i=sur[i]) { printf("%d ",i); } printf("1"); #ifndef ONLINE_JUDGE fclose(stdin); fclose(stdout); #endif return 0; }
相关文章推荐
- sgu126 分类: sgu 2015-02-15 17:09 69人阅读 评论(0) 收藏
- sgu163 分类: sgu 2015-02-15 17:31 60人阅读 评论(0) 收藏
- sgu169 分类: sgu 2015-02-15 18:03 64人阅读 评论(0) 收藏
- sgu124 分类: sgu 2015-02-15 16:02 56人阅读 评论(0) 收藏
- sgu125 分类: sgu 2015-02-15 16:39 67人阅读 评论(0) 收藏
- sgu200 分类: sgu 2015-05-25 18:53 32人阅读 评论(0) 收藏
- sgu224 分类: sgu 2015-06-12 10:42 19人阅读 评论(0) 收藏
- sgu 218 分类: sgu 2015-06-21 17:04 22人阅读 评论(0) 收藏
- sgu180 分类: sgu 2015-03-08 17:55 36人阅读 评论(0) 收藏
- sgu 208 分类: sgu templates 2015-06-17 01:40 24人阅读 评论(0) 收藏
- sgu 174 分类: sgu 2015-03-07 23:36 34人阅读 评论(0) 收藏
- sgu 193 分类: sgu 2015-03-11 18:38 45人阅读 评论(0) 收藏
- Android创建和使用数据库详… 分类: Android数据存储 2014-05-30 10:58 71人阅读 评论(0) 收藏
- sgu 167 分类: sgu 2015-05-13 19:20 31人阅读 评论(0) 收藏
- sgu 111 分类: sgu 2015-02-09 14:35 123人阅读 评论(0) 收藏
- hdu1166 分类: hdu 2015-02-10 14:21 71人阅读 评论(0) 收藏
- 2015-04 月份学习总结 分类: 学习总结 2015-05-04 19:46 71人阅读 评论(0) 收藏
- Excel Sheet Column Number 分类: Leetcode 2015-01-15 11:15 71人阅读 评论(0) 收藏
- sgu 202 分类: sgu 2015-06-08 09:44 18人阅读 评论(0) 收藏
- sgu 259 分类: sgu 2015-06-17 01:50 19人阅读 评论(0) 收藏