//图的存储与遍历 #include<bits/stdc++.h> using namespace std; vector<int> g[11]; queue<int> f; int vis[101],visw[101]; int a[11][11]; void dfs(int x){ vis[x]=true; cout<<x<<" "; for(int i=0; i<g[x].size(); i++){ int c=g[x][i]; if(!vis[c]) dfs(c); } } void bfs(int y){ f.push(y); visw[y]=true; while(!f.empty()){ y=f.front(); cout<<y<<" "; f.pop(); for(int i=0; i<g[y].size(); i++){ int l=g[y][i]; if(!visw[l]){ f.push(l); visw[l]=true; } } } } int main(){ int n; cin>>n; for(int i=1; i<=n; i++){ for(int k=1; k<=n; k++){ cin>>a[i][k]; if(a[i][k]==1) g[i].push_back(k); } } for(int i=1; i<=n; i++){ cout<<i<<" "; for(int k=0; k<g[i].size();k++){ cout<<g[i][k]<<" "; } cout<<endl; } for(int i=1; i<=n; i++) if(!vis[i]) dfs(i); cout<<endl; for(int i=1; i<=n; i++) if(!visw[i]) bfs(i); return 0; }
//sixdeg #include<bits/stdc++.h> using namespace std; vector<int> g[1001]; queue<int> f; int visw[1001],maxn,sy[1001]={0},maxs=0; int a[11][11]; void bfs(int y){ f.push(y); visw[y]=true; while(!f.empty()){ y=f.front(); f.pop(); for(int i=0; i<g[y].size(); i++){ int l=g[y][i]; if(!visw[l]){ sy[l]=sy[y]+1; maxs=max(maxs,sy[l]); f.push(l); visw[l]=true; } } } } int main(){ int c,p; cin>>c>>p; for(int i=1; i<=p; i++){ int x,y; cin>>x>>y; g[x].push_back(y); g[y].push_back(x); } bfs(1); cout<<maxs; return 0; }
//拓扑排序 #include<bits/stdc++.h> using namespace std; int n,m,d[1005]; priority_queue<int,vector<int>,greater<int> > q; vector<int> g[1005],ans; int main(){ cin>>n>>m; for(int i=1; i<=m; i++){ int x,y; cin>>x>>y; g[x].push_back(y); d[y]++; } for(int i=1; i<=n; i++){ if(d[i]==0) q.push(i); } while(!q.empty()){ int f=q.top(); q.pop(); ans.push_back(f); for(int i=0; i<g[f].size(); i++){ int t=g[f][i]; d[t]--; if(d[t]==0) q.push(t); } } if(ans.size()!=n) { cout<<-1<<endl; return 0; } for(int i=0; i<ans.size(); i++) cout<<ans[i]<<" "; return 0; }
//骑马修栅栏 #include<bits/stdc++.h> using namespace std; int mp[505][505]; int du[505]; int path[1030],k; int f,minn=INT_MAX,maxn=0,a,b; void dfs(int x){ for(int i=minn; i<=maxn; i++){ if(mp[x][i]){ mp[x][i]--;mp[i][x]--; dfs(i); } } path[k++]=x; } int main(){ cin>>f; for(int i=1; i<=f; i++){ cin>>a>>b; mp[a][b]++;mp[b][a]++; du[a]++;du[b]++; minn=min(minn,min(a,b)); maxn=max(maxn,max(a,b)); } int start=minn; for(int i=minn; i<=maxn; i++){ if(du[i]%2){ start=i; break; } } dfs(start); for(int i=k-1; i>=0; i--) cout<<path[i]<<endl; return 0; }
//传话 #include<bits/stdc++.h> using namespace std; int l[1001][10001]; int n,m,a,b,t; bool v[1001],huan[1001]; void dfs(int x){ if(huan[t]) return ; v[x]=1; if(x==t){ huan[t]=1; return ; } for(int i=1;i<=l[x][0];i++) if(!v[l[x][i]]) dfs(l[x][i]); } int main(){ cin>>n>>m; for(int i=1;i<=m;i++){ cin>>a>>b; l[a][0]++; l[a][l[a][0]]=b; } for(t=1;t<=n;t++){ memset(v,0,sizeof(v)); for(int i=1;i<=l[t][0];i++) dfs(l[t][i]); } for(int i=1;i<=n;i++) if(huan[i]) cout<<"T"<<endl; else cout<<"F"<<endl; return 0; }
//奖金 #include<bits/stdc++.h> using namespace std; int a[10001][301]={0},into[10001],ans[10001],m,n,money; void init(){ int i,x,y; cin>>n>>m; for(int i=1; i<=m; i++){ cin>>x>>y; a[y][0]++; a[y][a[y][0]]=x; into[x]++; } } bool tops(){ int t,tot=0,k=0,i,j; while(tot<n){ t=0; for(i=1; i<=n; i++) if(into[i]==0){ tot++;t++;money+=100; ans[t]=i; into[i]=0xfffffff; } if(t==0) return false; money+=k*t;k++; for(i=1; i<=t; i++) for(j=1; j<=a[ans[i]][0]; j++) into[a[ans[i]][j]]--; } return true; } int main(){ init(); money=0; if(tops()) cout<<money<<endl; else cout<<"Poor Xed"<<endl; return 0; }