#include<cstdio> using namespace std; int n,m; int g[101][101]={0},in[101]={0},out[101]={0}; void euler(int x) { for(int y=1;y<=n;y++) { if(g[x][y]==1) { g[x][y]=0; printf("%d ",y); euler(y); } } } int main() { scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) { int x,y; scanf("%d%d",&x,&y); g[x][y]=1; } int p=0,p1=0; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(g[i][j]==1) out[i]++; if(g[j][i]==1) in[i]++; } if(i==1&&out[i]-in[i]!=1) p=1; else { if(i!=n&&i!=1&&in[i]!=out[i]) { if(in[i]-out[i]==1) { p1+=1; } else { p=1; } } } if(p==1||p1==2) { printf("NO"); return 0; } } int start=1;printf("1 "); euler(start); return 0; }
上题为洛谷P7771(欧拉回路、通路
#include<cstdio> using namespace std; int n,q,k,t=1; bool sushu[100000001]={0}; int zhong[100000001]; int read() { int x=0,a=1; char ch=getchar(); while(ch<‘0‘||ch>‘9‘) { if(ch==‘-‘) a=-1; ch=getchar(); } while(ch>=‘0‘&&ch<=‘9‘) { x=x*10+ch-‘0‘; ch=getchar(); } return a*x; } int ss() { for(int i=2;i<=n;i++) { if(!sushu[i]) { zhong[++t]=i; } for(int j=1;j<=t&&i*zhong[j]<=n;j++) { sushu[zhong[j]*i]=1; if(i%zhong[j]==0) break; } } } int main() { n=read(),q=read(); ss( ); for(int i=1;i<=q;i++) { k=read(); printf("%d\n",zhong[k]); } return 0; }
P3383 (欧拉筛