欧拉路:分为2类,欧拉道路,欧拉回路
判定方法:
欧拉道路:图是连通的,度数是奇数的点只能有2个(起点,终点)
欧拉回路:图是连通的,度数是奇数的点没有
#include<bits/stdc++.h>
using namespace std;
#define cl(a,b) memset(a,b,sizeof(a))
#define LL long long
#define pb push_back
#define gcd __gcd
#define For(i,j,k) for(int i=(j);i<k;i++)
#define lowbit(i) (i&(-i))
#define _(x) printf("%d\n",x)
const int maxn = 1e5+10;
const int inf = 1 << 28;
int n,m;
bool vis[maxn];
vector<int> G[maxn];
void dfs(int u) {
vis[u]=true;
for(int i=0; i<G[u].size(); i++) {
int v = G[u][i];
if(vis[v])continue;
dfs(v);
}
}
int deg[maxn];
int main() {
while(cin>>n>>m) {
cl(vis,0);cl(deg,0);
for(int i=0; i<m; i++) {
int x,y;
cin>>x>>y;
G[x].pb(y);
G[y].pb(x);
deg[x]++;
deg[y]++;
}
dfs(1);
for(int i=1; i<=n; i++)if(!vis[i]) {
printf("Part\n");
return 0;
}
int ans = 0;
for(int i=1; i<=n; i++) {
if(deg[i]&1)ans++;
}
printf("%s\n",ans==2||ans==0?"Full":"Part");
}
return 0;
}