当前位置: 首页 > news >正文

360房产网郑州官网百度seo怎么收费

360房产网郑州官网,百度seo怎么收费,国外做美食视频网站有哪些,电子商务网站建设成果ppy欧拉路得判别法: 欧拉回路:我们先记录一下所有点得度数,然后拿并查集判断一下连通性,如果有解得话,我们从奇数个得点开始遍历,一直遍历到不能遍历为止,然后逆序输出得路径就是欧拉回路 P7771 【…

欧拉路得判别法:

在这里插入图片描述

欧拉回路:我们先记录一下所有点得度数,然后拿并查集判断一下连通性,如果有解得话,我们从奇数个得点开始遍历,一直遍历到不能遍历为止,然后逆序输出得路径就是欧拉回路

P7771 【模板】欧拉路径

题目描述

求有向图字典序最小的欧拉路径。

输入格式

第一行两个整数 n , m n,m n,m 表示有向图的点数和边数。

接下来 m m m 行每行两个整数 u , v u,v u,v 表示存在一条 u → v u\to v uv 的有向边。

输出格式

如果不存在欧拉路径,输出一行 No

否则输出一行 m + 1 m+1 m+1 个数字,表示字典序最小的欧拉路径。

输入输出样例 #1

输入 #1

4 6
1 3
2 1
4 2
3 3
1 2
3 4

输出 #1

1 2 1 3 3 4 2

输入输出样例 #2

输入 #2

5 5
1 2
3 5
4 3
3 4
2 3

输出 #2

1 2 3 4 3 5

输入输出样例 #3

输入 #3

4 3
1 2
1 3
1 4

输出 #3

No

说明/提示

对于 50 % 50\% 50% 的数据, n , m ≤ 1 0 3 n,m\leq 10^3 n,m103

对于 100 % 100\% 100% 的数据, 1 ≤ u , v ≤ n ≤ 1 0 5 1\leq u,v\leq n\leq 10^5 1u,vn105 m ≤ 2 × 1 0 5 m\leq 2\times 10^5 m2×105

保证将有向边视为无向边后图连通。

本题的数据生成器:

#include<bits/stdc++.h>
#include<windows.h>
using namespace std;
typedef unsigned long long ull;
#define N 100005
#define For(i,x,y)for(i=x;i<=(y);i++)
bool bo[N];
queue<int>p,q;
ull R=GetTickCount();
int deg[N][2],dep[N],fa[N];
inline int Rand(int _,int __)
{R^=R<<13;R^=R>>7;R^=R<<17;return R%(__-_+1)+_;
}
int find(int p)
{if(p!=fa[p])fa[p]=find(fa[p]);return fa[p];
}
inline void unite(int p,int q)
{p=find(p),q=find(q);if(p==q)return;if(dep[p]<dep[q])fa[p]=q;else fa[q]=p;if(dep[p]==dep[q])dep[p]++;
}
int main()
{freopen("P7771.in","w",stdout);int n=Rand(1,100000),m=Rand(190000,200000),i,u,v;cout<<n<<' '<<m;For(i,1,n)fa[i]=i;For(i,1,m>>1){u=Rand(1,n),v=Rand(1,n);cout<<endl<<u<<' '<<v;unite(u,v);deg[u][0]++;deg[v][1]++;}m-=m>>1;For(i,1,n)if(deg[i][0]<deg[i][1])p.push(i);else if(deg[i][0]>deg[i][1])q.push(i);while(m){if(p.empty()||q.empty())break;u=p.front();v=q.front();p.pop();q.pop();unite(u,v);cout<<endl<<u<<' '<<v;deg[u][0]++;deg[v][1]++;if(deg[u][0]<deg[u][1])p.push(u);if(deg[v][0]>deg[v][1])q.push(v);m--;}For(i,1,n-1)if(find(i)!=find(n)){cout<<endl<<n<<' '<<i<<endl<<i<<' '<<n;m-=2;unite(n,i);}if(m<2)while(1);while(m>Rand(0,1)){u=Rand(1,n);cout<<endl<<u<<' '<<u;m--;}if(m)cout<<endl<<Rand(1,n)<<' '<<Rand(1,n);return 0;
}

注意这题是有向图,且题目保证了连通性

AC代码:

#include<bits/stdc++.h>using namespace std;typedef long long ll;
typedef pair<int, int>PII;
const int N = 1e6 + 10;
const int MOD = 998244353;
const int INF = 0X3F3F3F3F;
const int dx[] = {-1, 1, 0, 0, -1, -1, +1, +1};
const int dy[] = {0, 0, -1, 1, -1, +1, -1, +1};
const int M = 998244353;int inp[N], out[N];//入出度vector<int>ed[N];
stack<int>st;//记录路径
//有向图
int del[N];//记录下标,为了避免重复访问
void dfs(int now)
{for(int i = del[now]; i < ed[now].size(); i = del[now]){del[now] = i + 1;//防止重复遍历dfs(ed[now][i]);}st.push(now);
}
int main()
{int n, m;cin >> n >> m;for(int i = 1; i <= m; i ++){int u, v;cin >> u >> v;ed[u].push_back(v);out[u] ++;inp[v] ++;}//判断是否存在欧拉路径(一笔画)int f = 0;int c1 = 0, c2 = 0;int s = 1;//起点for(int i = 1; i <= n; i ++){sort(ed[i].begin(), ed[i].end());//拍一下序,方便得到最小字典序if(out[i] != inp[i])//有相同,如果没有相同就以1为起点即可{f = 1;if(out[i] - inp[i] == 1) s = i, c1 ++;//出度比入度多1,就是起点else if(inp[i] - out[i] == 1) c2 ++;else return cout << "No" << endl, 0;//学到了,还能这样返回}}if(f && !(c1 == c2 && c1 == 1)) {return cout << "No" << endl, 0;}dfs(s);while(st.size()){cout << st.top() << ' ';st.pop();}cout << endl;return 0;
}
http://www.cadmedia.cn/news/16724.html

相关文章:

  • 企业品牌网站建设郑州手机网站建设
  • 旅游地网站制作广西疫情最新消息
  • 深圳最新疫情风险等级地区名单宁波seo服务快速推广
  • 简述网站开发的5个步骤怎么弄属于自己的网站
  • 公司建网站多少钱一年成都seo优化公司排名
  • 河南住房城乡建设厅官方网站新手seo要学多久
  • 网页设计制作成品宁波如何做seo排名优化
  • 青海免费网站建设今日头条搜索优化
  • 做网站去哪里可以找高清的图片什么网站做推广比较好
  • 坑梓网站建设平台中国职业培训在线
  • 简单广告牌制作方法seo流量是什么
  • 找网络公司做网站需要注意的黑帽seo教程
  • 辽阳网站建设哪家好看b站视频软件下载安装
  • 百度小程序如何做网站好123上网主页
  • 摄影网站设计论文广东seo推广
  • 陶瓷网站开发背景武汉久都seo
  • 想做个网站 怎么做网站收录入口申请查询
  • 门户网站 备案网站keywords
  • 宝安响应式网站建设免费的网站
  • wordpress页面教程视频保定seo排名
  • 中企动力邮箱手机登录入口北京核心词优化市场
  • 广东住房和城乡建设厅网站首页关键词优化推广排名多少钱
  • 工作网哪个平台可靠关键词优化怎么操作
  • 安康市城市建设局网站seo查询seo优化
  • 张家港网站设计制作大连网站排名推广
  • 视觉中国网站建设公司营销课程
  • 苏州住房和城乡建设局网站阿里巴巴国际站官网
  • 网站建设提供资料表seo兼职
  • 网站客服工作内容企业管理培训机构
  • 石家庄外贸公司网站设计公司网站推广优化方法