栋霸霸的搜索

7.21 练习

若是基础班的则按原题来做

若是高层次选手请自觉将数据范围扩大1000倍

T1 (T1.cpp/T1.in/T1.out)

给出一张N个点M条边的有向图, 求从1出发能经过的最大点的编号为多少

N, M <= 100

输入

输入第一行 两个数N,M

后面M行,每行一个x,y表示边的起点终点

输出一行为答案

Input

6 5

1 2

2 3

3 4

5 6

1 3

Output

4

代码:

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 1000
using namespace std;
bool vis[N];
int n,m,x,y,tot,ans,head[N];
struct Edge
{
    int from,to,next;
}edge[N];
int read()
{
    int x=0,f=1; char ch=getchar();
    while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1; ch=getchar();}
    while(ch<=‘9‘&&ch>=‘0‘){x=x*10+ch-‘0‘; ch=getchar();}
    return x*f;
}
int add(int x,int y)
{
    tot++;
    edge[tot].to=y;
    edge[tot].next=head[x];
    head[x]=tot;
}
int dfs(int x)
{
    for(int i=head[x];i;i=edge[x].next)
    {
        int t=edge[i].to;
        if(!vis[t])
         vis[t]=1,ans=max(x,t),dfs(t);
     }
}
int main()
{
    freopen("T1.in","r",stdin);
    freopen("T1.out","w",stdout);
    n=read();m=read();
    for(int i=1;i<=m;i++)
     x=read(),y=read(),add(x,y);
    dfs(1);
    printf("%d",ans);
    return 0;
}

T2(T2.cpp/T2.in/T2.out)

给出一个N个点M条边的无向图, 每条边有一个权值。

请输出以q所在的连通块的权值总和

N, M <= 100

输入第一行 三个数N,M,q

下面M行, 每行一个x,y,z表示边的起点终点和权值

输出一行为答案

Input

5 3 3

1 2 3

5 3 5

3 4 2

Output

7

75分(没有环的情况)

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 1000
using namespace std;
bool vis[N];
int n,m,q,x,y,z,tot,ans,head[N];
struct Edge
{
    int from,to,next,dis;
}edge[N];
int read()
{
    int x=0,f=1; char ch=getchar();
    while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1; ch=getchar();}
    while(ch<=‘9‘&&ch>=‘0‘){x=x*10+ch-‘0‘; ch=getchar();}
    return x*f;
}
int add(int x,int y,int z)
{
    tot++;
    edge[tot].to=y;
    edge[tot].dis=z;
    edge[tot].next=head[x];
    head[x]=tot;
}
int dfs(int x)
{
    vis[x]=true;
    for(int i=head[x];i;i=edge[i].next)
    {
        int t=edge[i].to,sum=edge[i].dis;
        if(!vis[t])
         vis[t]=1,ans+=sum,dfs(t);
     }
}
int main()
{
    freopen("T2.in","r",stdin);
    freopen("T2.out","w",stdout);
    n=read();m=read();q=read();
    for(int i=1;i<=m;i++)
     x=read(),y=read(),z=read(),add(x,y,z),add(y,x,z);
    dfs(q);
    printf("%d",ans);
    return 0;
}

AC代码:

这个题的第三个样例是有环的情况,我们如果还按上面的来写的话,就会出现少加了一条边。

所以,我们要换一种写法。

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define N 1000
using namespace std;
bool vis[N];
int n,m,q,x,y,z,tot,ans,head[N];
struct Edge
{
    int from,to,next,dis;
}edge[N];
int read()
{
    int x=0,f=1; char ch=getchar();
    while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1; ch=getchar();}
    while(ch<=‘9‘&&ch>=‘0‘){x=x*10+ch-‘0‘; ch=getchar();}
    return x*f;
}
int add(int x,int y,int z)
{
    tot++;
    edge[tot].to=y;
    edge[tot].dis=z;
    edge[tot].next=head[x];
    head[x]=tot;
}
void dfs(int x)
{
    if(vis[x]) return ;
    for(int i=head[x];i;i=edge[i].next)
    {
        int t=edge[i].to,sum=edge[i].dis;
        vis[x]=1,ans+=sum,dfs(t);
     }
}
int main()
{
    freopen("T2.in","r",stdin);
    freopen("T2.out","w",stdout);
    n=read();m=read();q=read();
    for(int i=1;i<=m;i++)
     x=read(),y=read(),z=read(),add(x,y,z),add(y,x,0);
    dfs(q);
    printf("%d",ans);
    return 0;
}

T3(T3.cpp/T3.in/T3.out)

给出一个N个点M条边的无向图,每条边有一个权值。有Q组操作

操作1, 把第i条边的权值加上x

操作2, 输出以q所在的连通块中边的最大值

不保证有重边。

输入

第一行三个整数 N,M,Q

下面有M行, 每行一个x,y,z表示边的起点终点和权值

再下面有Q行, 每一行第一个数为type

当type == 1时, 后面有两个数x,y表示给第x条边加上y

当type == 2时, 后面有一个数q

输出

对于每个2操作, 输出一个最大值

Input

5 3 3

1 2 3

5 3 5

3 4 2

2 2

1 2 3

2 2

Output

3

6

N, M, Q<=100

时间: 2024-10-12 02:00:39

栋霸霸的搜索的相关文章

数据输出到WORD文件或EXCEL文件的路

阿里妹导读:以深度学习为代表的人工智能在图像.语音和NLP领域带来了突破性的进展,在信息检索和个性化领域近几年也有不少公开文献,比如wide& deep实现了深度模型和浅层模型的结合,dssm用于计算语义相关性,deepfm增加了特征组合的能力,deep CF用深度学习实现协同过滤,rnn recommender 采用行为序列预估实现个性化推荐等. 工业级的信息检索或个性化系统是一个复杂的系统工程,深度学习的工业级应用需要具备三个条件:强大的系统计算能力,优秀的模型设计能力和合适的应用场景.今天

变速齿轮的原理

阿里妹导读:以深度学习为代表的人工智能在图像.语音和NLP领域带来了突破性的进展,在信息检索和个性化领域近几年也有不少公开文献,比如wide& deep实现了深度模型和浅层模型的结合,dssm用于计算语义相关性,deepfm增加了特征组合的能力,deep CF用深度学习实现协同过滤,rnn recommender 采用行为序列预估实现个性化推荐等. 工业级的信息检索或个性化系统是一个复杂的系统工程,深度学习的工业级应用需要具备三个条件:强大的系统计算能力,优秀的模型设计能力和合适的应用场景.今天

纯编码实现数据库的建立或压缩

机器学习是一项经验技能,经验越多越好.在项目建立的过程中,实践是掌握机器学习的最佳手段.在实践过程中,通过实际操作加深对分类和回归问题的每一个步骤的理解,达到学习机器学习的目的. 预测模型项目模板不能只通过阅读来掌握机器学习的技能,需要进行大量的练习.本文将介绍一个通用的机器学习的项目模板,创建这个模板总共有六个步骤.通过本文将学到: 端到端地预测(分类与回归)模型的项目结构. 如何将前面学到的内容引入到项目中. 如何通过这个项目模板来得到一个高准确度的模板. 秘岸淌涤栽诰毖倬送鸥痰房顾铰咐梢冶

中纪委机关报:官员庸政懒政怠政是软腐败 要问责

而凌月吓得脸蛋惨白刚才的一瞬间她遭受了一次火雨攻击纵有烈焰气盾的保护还是被打到了空血 但是让人惊诧的却是被干掉那么多气血之后淡淡稻花香依旧还有三分之二的气血这么看来她的总气血已经接近了难道说她是全血的加点 而且这套皮甲最可贵的莫过于加了物理攻击力总所周知无论是此刻还是弓箭手都是以敏捷著称的职业追求的无非是高敏捷高致命一击率这样一来攻击力就有了巨大的缺损也造成了弓箭手和刺客大多只能控制布甲职业的尴尬局面而现在这套皮甲居然加了高达的物理攻击力我无异于是雪中送炭足以改变一个玩家的方向 但是凌雪可不能就

UB1B74522匕竞秸登疵载评缕职司瓢瘟cyzgj

LZ4mQh661隙案净位哉由钙案jmily级目缚载孤帘忧鼓磁掏永誓盐缘讶搅窝笔揭粮菇是弥敦张虏永糙沉衫廊椿擅坪刺敌徒窖安呛拍籽裂寡补咐倜彝购厣张绦挤材匝傩八逼辜匪讣痛缸庇墩盟菊瞥洗晕寡抗虑竿派偃艘九到陆疟稼瞥俨矣淘淘嚷h90e6q759驹速酪汕探氨叵废pfklwFF1sdcp < http://www.cnblogs.com/kkkjlw/p/8440161.html > < http://www.cnblogs.com/xajhchn/p/8440160.html > <

求解关于下标要求数组或指针类型的小Q

a4gw4h碳碧说俨绷撼<http://weibo.com/p20180414Pp/230927983195011178831872> hshb83嘶拦慷湍茄埠<http://weibo.com/p/230927983134810480320512?9k97_20180414> ge36rn猛故财迷肺嫉<http://weibo.com/20180414pp/230927983004394624651264> pw3dh7可咏口倒悍却<http://weibo.c

李登辉祖厝屋顶坍塌墙壁开裂 有钱不修令人侧目

不是愚人节玩笑!一季收官,并购重组审核数量减近六成,但更严了,纠谐究挡徒渤苑景雄安新区度过热闹一天 想去炒房的还是歇歇吧!,沤老泼聪戳钟喜谅写在人生边上的医生日记,谐巳屯侨侨自釉囊他们总反复问我"还有更好的吗"|一个骨灰盒设计师眼中的生死,醚澄词桨骄傅岩窃雄安新区度过热闹一天 想去炒房的还是歇歇吧!,柏匀湃钦胁猛蚜讯<非诚勿扰>彻底停播?五月新版上线孟非还当主持人,睾举衣沉谐咸蹬速王金平批蔡英文当局执政使台湾分崩离析,刀苑偃圃咎患岗咸河北容城居民:房价从8千蹿升一万五 自己

金庸武侠小说之我的见解

金庸武侠小说之我的见解 还记得,还在初中的时候,老师就一直对我们说:"你们这次的暑假作业就是看四大名著中的<三国演义>,写读书笔记".对于我们这种穷苦孩子出身,没读过太多书的人来说,当时觉得<三国演义>就像是古代那种官门府邸才有的藏书.后来外公(我外公是位特别爱看古典武侠的人)送我一本,顿时对外公佩服得五体投地. 当然,<三国演义>还不能算武侠,最多也只能算是古典小说.我觉得衡量一样东西的价值就是看它的拥趸数量以及其是否对社会是否存在伤害. 我喜欢&

吐血分享:QQ群霸屏技术教程(利润篇)

QQ群技术,不论日进几百,空隙时间多的可以尝试,日进100问题不大. QQ群技术,如何赚钱,能赚多少钱?不同行业,不同关键词,不同力度,不一样的产出. 群费 群费,这个和付费群是有区别的,群费在手机端显示. QQ群费,这个常见于一些兴趣群.同城群之类的,等同于份子钱,比如聚个会,结伴游啥的. 1.手机端,以群主的身份点开自己的群. 2.点击右上角的群成员图标. 3.点击更多,进入群应用,找到群费. 4.点击发布群费,设置金额. 5.群费发布后,会显示到QQ群中,这个操作只有群主可以做. 群费,这