ccf+欧拉回路和dfs判断无向图的连通性+这里知道了bool标记visit以及vector和前向星存图

来源:互联网 发布:苹果的c语言编程软件 编辑:程序博客网 时间:2024/06/06 02:41
点击打开链接
#include<stdio.h>#include<stdlib.h>#include<iostream>#include<string.h>#include<cstring>#include<string>#include<math.h>#include<algorithm>#define LL long long#define inf 0x3f3f3f3f#define mod 1000000007#include<stack>using namespace std;int Arr[1002][1002],vis[1002][1002];int bian[1002],n=0,m=0;stack<int>Q;void euler(int u){for(int v=1;v<=n;v++){if(Arr[u][v]&&!vis[u][v]){vis[u][v]=vis[v][u]=1;euler(v);    Q.push(v);}}}int main(){int i=0,a=0,b=0,num=0;scanf("%d%d",&n,&m);for(i=0;i<m;i++){scanf("%d%d",&a,&b);Arr[a][b]=Arr[b][a]=1;bian[a]++;bian[b]++;}for(i=0;i<m;i++){if(bian[i]%2) num++;}if((num!=0&&num!=2)||(num==2&&bian[1]%2==0)){printf("-1\n");}else{euler(1);printf("1 ");while(!Q.empty()){printf("%d ",Q.top());Q.pop();}printf("\n");}return 0;}


#include<stdio.h>#include<stdlib.h>#include<iostream>#include<string.h>#include<cstring>#include<string>#include<math.h>#include<algorithm>#define LL long long#define inf 0x3f3f3f3f#define mod 1000000007#define N 10002#include<vector>#include<stack>bool vis[N][N];bool visit[N];///必须使用bool型的额using namespace std;int bian[N],n=0,m=0;vector<int> G[N];stack<int> Q;void dfs(int u){visit[u]=true;///好像必须从这里开始额,第一个传进来的点就标记。作为模板记着吧。int d=G[u].size();for(int i=0;i<d;i++){int v=G[u][i];if(!visit[v]){dfs(v);}}}void euler(int u){int d=G[u].size();for(int i=0;i<d;i++){int v=G[u][i]; if(!vis[u][v]){vis[u][v]=vis[v][u]=true;euler(v);Q.push(v);}}}int main(){int i=0,a=0,b=0,num=0;memset(vis,false,sizeof(vis));scanf("%d%d",&n,&m);for(i=0;i<m;i++){scanf("%d%d",&a,&b);G[a].push_back(b);G[b].push_back(a);bian[a]++;bian[b]++;}for(i=0;i<n;i++){sort(G[i].begin(),G[i].begin()+G[i].size());}for(i=0;i<m;i++){if(bian[i]%2) num++;}dfs(1);///dfs判断无向图的连通性。 bool flag=0;for(int i=1;i<=n;i++){if(visit[i]==false){flag=true;break;}}///printf("%d\n",flag);if(flag==true){printf("-1\n");}else if((num!=0&&num!=2)||(num==2&&bian[1]%2==0)){printf("-1\n");}else{euler(1);printf("1 ");while(!Q.empty()){printf("%d ",Q.top());Q.pop();}printf("\n");}return 0;}


0 0
原创粉丝点击