博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【拓扑排序】【最短路】【最小生成树】Day 9.2
阅读量:5104 次
发布时间:2019-06-13

本文共 1744 字,大约阅读时间需要 5 分钟。

T1

 裸的拓扑排序

1 #include 
2 #include
3 struct E{ 4 int next,to; 5 }e[100001]; 6 int n,m,t,a,b,sz,pd,head[100001],reg[100001],in[100001]; 7 void insert(int a,int b) 8 { 9 sz++;10 e[sz].next=head[a];11 head[a]=sz;12 e[sz].to=b;13 }14 int dfs(int x)15 {16 reg[x]=1;in[x]=1;17 for (int i=head[x];i;i=e[i].next)18 {19 if (in[e[i].to])20 {21 pd=0;22 return 1;23 }24 else25 {26 if (!reg[e[i].to]&&dfs(e[i].to)) return 1;27 }28 }29 in[x]=0;30 return 0;31 }32 int main()33 {34 scanf("%d",&t);35 while(t--)36 {37 memset(head,0,sizeof(head));38 memset(reg,0,sizeof(reg));39 memset(in,0,sizeof(in));40 sz=0;pd=1;41 scanf("%d%d",&n,&m);42 for (int i=1;i<=m;i++)43 {44 scanf("%d%d",&a,&b);45 insert(a,b);46 }47 for (int i=1;i<=n;i++) if (pd&&!reg[i]) dfs(i);48 printf("%d\n",pd);49 }50 }

 

T2

 略微改编的最短路

1 #include 
2 #include
3 int t,n,m[101][101],f[101],in[101]; 4 char x; 5 void dfs(int x) 6 { 7 int cnt=0; 8 for (int i=1;i<=n;i++) 9 {10 if (m[x][i]==1)11 {12 if (f[i]==-1||f[x]+cnt

 

T3

题目描述:

有一个魔术师,他有 n 个未知整数,每个数是 0 或者 1,你的目的是猜出魔术师的这 n 个未 知数。

为了猜出 n 个未知数,你可以向魔术师询问第 x 到第 y 个数的异或和,但是每次询问你都需 要给魔术师一定的金钱,不同的询问需要不同的金钱。

你现在需要计算出猜出这 n 个数至少需要花费多少钱。

 一道略有难度的MST

1 #include 
2 #include
3 using namespace std; 4 struct E{ 5 int a,b,w; 6 }e[1000001]; 7 int n,w,sz=0,ans=0,cnt=0,f[1001]; 8 bool cmp(E a,E b) {
return a.w

 

转载于:https://www.cnblogs.com/algonote/p/7467908.html

你可能感兴趣的文章
【学习整理】树状数组 区间修改+查询
查看>>
你知道电脑硬盘怎么分区吗?
查看>>
去除Visual Studio引号中的内容和注释中出现的波浪下划线
查看>>
C#多线程方法 可传参
查看>>
[zz]一个简单加密病毒的框架
查看>>
supervisor配置详解
查看>>
java 获取当月第一天和最后一天 获取前一个月第一天和最后一天
查看>>
js 获得日期相差天数
查看>>
速度环加位置环进行电机控制
查看>>
发布.net core项目 System.AggregateException: 发生一个或多个错误
查看>>
空间滤波
查看>>
学习Memcached:1基本配置与安装
查看>>
C#.NET 生成分页SQL代码(NOT IN/TOP TOP/Top MAX)三种方法,支持ACCESS
查看>>
让爱编译通过
查看>>
java通过url调用远程接口返回json数据
查看>>
【循序渐进学Python】5.Python常用流程控制及其他语句
查看>>
深入理解linux启动过程
查看>>
Python建立Web应用
查看>>
php
查看>>
使用requests模块post payload请求
查看>>