8/2上午
找路径
#include<bits/stdc++.h> using namespace std; bool pp=false; int n,m; int a[1005][2],w[1005][1005]; bool d[1005]; int b[1005][1005]; int k[10005],x=0; void dfs(int i,int wn,int dep){ if(i==n){ for(int z=1; z<dep; z++){ cout<<k[z]<<" "; } pp=true; cout<<n<<" "<<wn<<endl; return ; } d[i]=true; k[dep]=i; for(int j=1; j<=n; j++){ if(b[i][j]!=0 && d[j]==false){ d[j]=true; dfs(j,wn+w[i][j],dep+1); d[j]=false; } } } int main(){ int yy; cin>>n>>m; for(int i=1; i<=m; i++){ cin>>a[i][1]>>a[i][2]; cin>>yy; w[a[i][1]][a[i][2]]=yy; w[a[i][2]][a[i][1]]=yy; b[a[i][1]][a[i][2]]=1; b[a[i][2]][a[i][1]]=1; } dfs(1,0,1); if(pp==false){ cout<<"-1"<<endl; } return 0; } /*5 5 1 2 4 2 4 5 4 5 1 2 5 3 1 5 10*/
一笔画问题
#include<bits/stdc++.h> using namespace std; bool pp=false; int n,m,wn; int a[1005][2],w[1005][1005]; bool d[1005]; int b[1005][1005]; int k[10005],x[1005]; int ss[10005],s; int dep; int dfs(int i){ for(int j=1; j<=n; j++){ if(b[i][j]!=0){ b[i][j]=0; b[j][i]=0; dfs(j); } } dep+=1; k[dep]=i; return 0; } int main(){ int sr=1; cin>>n>>m; for(int i=1; i<=m; i++){ cin>>a[i][1]>>a[i][2]; b[a[i][1]][a[i][2]]=1; b[a[i][2]][a[i][1]]=1; ss[a[i][1]]++; ss[a[i][2]]++; } for(int i=1; i<=n; i++){ if(ss[i]%2!=0){ s++; x[sr]=i; sr++; } } if(s==2){ dfs(x[1]); }else if(s==0){ dfs(1); } for(int i=dep; i>=1; i--){ cout<<k[i]<<" "; } cout<<endl; return 0; }
骑马修栅栏(答案错误13%)
#include<bits/stdc++.h> using namespace std; int m,n; int a[1005][2]; bool d[1005]; int b[1005][1005]; int k[10005],x=0; int s; int dep=1; int dfs(int i){ for(int j=1; j<=n; j++){ if(b[i][j]!=0){ b[i][j]=0; b[j][i]=0; dfs(j); } } k[dep]=i; dep++; return 0; } int main(){ int yy; cin>>m; for(int i=1; i<=m; i++){ cin>>a[i][1]>>a[i][2]; n=max(n,a[i][1]); n=max(n,a[i][2]); b[a[i][1]][a[i][2]]=1; b[a[i][2]][a[i][1]]=1; } dfs(1); for(int i=dep-1; i>=1; i--){ cout<<k[i]%500<<endl; } return 0; }
63%
#include<bits/stdc++.h> using namespace std; bool pp=false; int n,m,wn; int a[1005][2],w[1005][1005]; bool d[1005]; int b[1005][1005]; int k[10005],x[1005]; int ss[10005],s; int dep; int dfs(int i){ for(int j=1; j<=n; j++){ if(b[i][j]!=0){ b[i][j]=0; b[j][i]=0; dfs(j); } } dep+=1; k[dep]=i; return 0; } int main(){ int sr=1; cin>>m; for(int i=1; i<=m; i++){ cin>>a[i][1]>>a[i][2]; n=max(n,a[i][1]); n=max(n,a[i][2]); b[a[i][1]][a[i][2]]=1; b[a[i][2]][a[i][1]]=1; ss[a[i][1]]++; ss[a[i][2]]++; } for(int i=1; i<=n; i++){ if(ss[i]%2!=0){ s++; x[sr]=i; sr++; } } if(s==2){ dfs(x[1]); }else if(s==0){ dfs(1); } for(int i=dep; i>=1; i--){ cout<<k[i]%500<<endl; } cout<<endl; return 0; }
80%
#include<bits/stdc++.h> using namespace std; bool pp=false; int n,m,wn; int a[1005][2],w[1005][1005]; bool d[1005]; int b[1005][1005]; int k[10005],x[1005]; int ss[10005],s; int dep; void dfs(int i){ for(int j=1; j<=n; j++){ if(b[i][j]){ b[i][j]--; b[j][i]--; dfs(j); } } k[dep++]=i; } int main(){ int sr=1; cin>>m; for(int i=1; i<=m; i++){ cin>>a[i][1]>>a[i][2]; n=max(n,a[i][1]); n=max(n,a[i][2]); b[a[i][1]][a[i][2]]++; b[a[i][2]][a[i][1]]++; ss[a[i][1]]++; ss[a[i][2]]++; } for(int i=1; i<=n; i++){ if(ss[i]%2!=0){ s++; x[sr]=i; sr++; } } if(s==2){ dfs(x[1]); }else if(s==0){ dfs(1); } for(int i=dep; i>=1; i--){ cout<<k[i]%500<<endl; } return 0; }
100%
#include<bits/stdc++.h> using namespace std; #define N 1000+1 int w[N][N],n,du[N],maxx,ans[N],tot; void dfs(int x) {//不知道为什么在这里记录答案会错掉 for(int i=1;i<=maxx;i++) if(w[x][i]) { w[x][i]--; w[i][x]--; dfs(i); } ans[++tot]=x; } int main() { cin>>n; for(int i=1;i<=n;i++) { int x,y; cin>>x>>y; w[x][y]++; w[y][x]++; du[x]++; du[y]++; maxx=max(maxx,max(x,y)); } int sta=0; for(int i=1;i<=maxx;i++) if(du[i]%2==1){ sta=i; break; } if(sta==0) { for(int i=1;i<=maxx;i++) if(du[i]) { sta=i; break; } } dfs(sta); for(int i=tot;i>=1;i--) cout<<ans[i]<<endl; }
细胞
#include<bits/stdc++.h> using namespace std; char ch[105][105]; int dir1[4]={0,1,0,-1}; int dir2[4]={1,0,-1,0}; bool vis[105][1005]; int q[1005][5]; int front,rear; int cnt=0; int r,c; string s; void bfs(int i,int j){ front=rear=1; q[1][0]=i; q[1][1]=j; vis[i][j]=true; while (front<=rear){ int x=q[front][0]; int y=q[front][1]; for(int k=0; k<4; k++){ int nx=x+dir1[k]; int ny=y+dir2[k]; if(nx>=1 && nx<=r && ny>=1 && ny<=c && ch[nx][ny]!='0' && vis[nx][ny]==false){ rear++; q[rear][0]=nx; q[rear][1]=ny; vis[nx][ny]=true; } } front++; } } int main(){ cin>>r>>c; for(int i=1; i<=r; i++){ for(int j=1; j<=c; j++){ cin>>ch[i][j]; } } for(int i=1; i<=r; i++){ for(int j=1; j<=c; j++){ if(ch[i][j]!='0' && vis[i][j]==false){ bfs(i,j); cnt++; } } } cout<<cnt<<endl; return 0; }
队列
#include<bits/stdc++.h> using namespace std; int main(){ int n,m,a[1005]; cin>>n>>m; for(int i=1; i<=n; i++){ cin>>a[i]; } for(int i=n+1; i<=m+n; i++){ cin>>a[i]; } sort(a+1,a+m+n+1); for(int i=1; i<=m+n; i++){ cout<<a[i]<<" "; } cout<<endl; return 0; }
未完成的传话
#include<bits/stdc++.h> using namespace std; int n,m; int a1,a2; int a[1005][1005]; void dfs(int i){ for(int j=1; j<=n; j++){ if(a[i][j]==1){ } } } int main(){ cin>>n>>m; for(int i=1; i<=m; i++){ cin>>a1>>a2; a[a1][a2]=1; a[a2][a1]=1; } for(int i=1; i<=n; i++){ dfs(i); if(f==true){ cout<<"T"<<endl; }else cout<<"F"<<endl; f=false; } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现