7/24
边表邻接矩阵
#include<bits/stdc++.h> using namespace std; int n,m; int v1,v2; int a[105][105]; int main(){ cin>>n>>m; for(int i=1; i<=m; i++){ cin>>v1>>v2; a[v1][v2]=1; a[v2][v1]=1; } for(int i=1; i<=n; i++){ for(int j=1; j<=n; j++){ if(j==n){ cout<<a[i][j]; } else cout<<a[i][j]<<" "; } cout<<endl; } return 0; }
图的概念
#include<bits/stdc++.h> using namespace std; int n,m; int v1,v2; int a[105][105]; int main(){ cin>>n>>m; for(int i=1; i<=m; i++){ cin>>v1>>v2; a[v1][v2]=1; a[v2][v1]=1; } for(int i=1; i<=n; i++){ for(int j=1; j<=n; j++){ if(j==n){ cout<<a[i][j]; } else cout<<a[i][j]<<" "; } cout<<endl; } return 0; }
铲雪车问题
#include<bits/stdc++.h> using namespace std; int main(){ long long x,y; long long a,b,c,d; double s=0; cin>>x>>y; while(cin>>a>>b>>c>>d){ s+=sqrt((c-a)*(c-a)+(d-b)*(d-b)); } double ans=s*2/1000/20; long long h=(long long)(ans); long long f=(long long)((ans-h)*60+0.5); printf("%lld:%02lld\n",h,f); return 0; }
删边问题
#include<bits/stdc++.h> using namespace std; int main(){ int n,m,a,b; cin>>n>>m; for(int i=1; i<=m; i++){ cin>>a>>b; } cout<<m-n+1<<endl; return 0; }
走出迷宫
#include<bits/stdc++.h> using namespace std; char a[101][101]; int b[101][101]; int f[10001][4]; int x[]={0,0,-1,1}; int y[]={-1,1,0,0}; int n,m,bx,by,ex,ey; void bfs(int x1,int y1) { int begin=1,end=1; memset(b,0,sizeof(b)); b[x1][y1]=1; f[begin][0]=x1; f[begin][1]=y1; f[begin][2]=0; end++; while(begin<end) { int x2=f[begin][0]; int y2=f[begin][1]; int ans=f[begin][2]; if(x2==ex&&y2==ey) { cout<<ans<<endl; return; } for(int i=0;i<4;i++) { int x3=x2+x[i]; int y3=y2+y[i]; if(x3>=0&&y3>=0&&x3<n&&y3<m&&b[x3][y3]==0&&a[x3][y3]=='.') { b[x3][y3]=1; f[end][0]=x3; f[end][1]=y3; f[end][2]=ans+1; end++; } } begin++; } } int main() { cin>>n>>m; for(int i=0;i<n;i++) { for(int k=0;k<m;k++) { cin>>a[i][k]; if(a[i][k]=='S') { bx=i; by=k; } if(a[i][k]=='T') { ex=i; ey=k; a[i][k]='.'; } } } bfs(bx,by); return 0; }
图的存储和遍历(未完成)
#include<bits/stdc++.h> using namespace std; int n,a[15][15]; bool d[1005]; bool vis[1005]; int g[15][15]; void dfs(int x){ if(x<=n && a[x][x+1]!=0){ cout<<x<<" "; d[x]=true; dfs(x+1); d[x]=false; } } void bfs(){ memset(vis,0,sizeof(vis)); queue<int> q; while(!q.empty()) q.pop(); q.push(1); vis[1]=1; while(!q.empty()){ int h=q.front(); q.pop(); cout<<h<<" "; for(int i=1; i<=g[h][0]; i++){ if(vis[g[h][i]]==0){ q.push(g[h][i]); vis[g[h][i]]=1; } } } } int main(){ int s=0; cin>>n; for(int i=1; i<=n; i++){ for(int j=1; j<=n; j++){ cin>>a[i][j]; } } for(int i=1; i<=n; i++){ cout<<i<<" "; for(int j=1; j<=n; j++){ if(a[i][j]!=0){ cout<<j<<" "; } } cout<<endl; } dfs(1); cout<<endl; bfs(); cout<<endl; return 0; }
细胞
#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; }

浙公网安备 33010602011771号