#个人刷题记录#图论
2026-04-05 10:09:07
发布于:浙江
注意不是洛谷的,是我们老师的网站
最长路(这个洛谷上有)
#include<bits/stdc++.h>
using namespace std;
const int N=1e5;
int n,m;
struct edge{
int v,w;
};
vector<edge> g[N];
int du[N],dp[N],vis[N];
void dfs_toupu(int u,int t){
vis[u]=1;
for(edge e:g[u]){
int v=e.v;
int w=e.w;
du[v]--;
dp[v]=max(dp[v],dp[u]+w);
if(du[v]==0)
dfs_toupu(v,1);
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=m;++i){
int u,v,w;
cin>>u>>v>>w;
g[u].push_back(edge{v,w});
du[v]++;
}
memset(dp,-0x3f,sizeof(dp));
dp[1]=0;
for(int i=1;i<=n;++i)
if(du[i]==0 && vis[i]==0)
dfs_toupu(i,0);
cout<<dp[n];
return 0;
}
走迷宫:
include<bits/stdc++.h>
using namespace std;
int main(){
int n,m,dx[]={-1,1,0,0},dy[]={0,0,-1,1};
char g[1009][1009];
bool v[1009][1009]={0};
queue<int> q;
cin>>n>>m;
for(int i=0;i<n;i++)
cin>>g[i];
q.push(0);q.push(0);q.push(0);
v[0][0]=1;
while(!q.empty()){
int x=q.front();q.pop();
int y=q.front();q.pop();
int s=q.front();q.pop();
if(x==n-1&&y==m-1){
cout<<s;
return 0;
}
for(int i=0;i<4;i++){
int nx=x+dx[i],ny=y+dy[i];
if(nx>=0&&nx<n&&ny>=0&&ny<m && g[nx][ny]=='.' && !v[nx][ny]){
v[nx][ny]=1;
q.push(nx);q.push(ny);q.push(s+1);
}
}
}
cout<<"No solution";
return 0;
}
洪水填充
不会
注意啊,我的代码都是自己写的,如果是AI,我是s b行不?
网站链接
1.牢湿网址1
2.牢湿网址2
全部评论 3
深广搜要是还要 AI 那确实是 s b 了
2026-04-05 来自 浙江
0包的
2026-04-05 来自 浙江
0
为啥要做广搜
2026-04-05 来自 浙江
0额,我们老师教的
2026-04-05 来自 浙江
0(他说代码很短
2026-04-05 来自 浙江
0是很短啊
2026-04-05 来自 浙江
0
对不起,您要找的帖子不存在
2026-04-05 来自 重庆
0























有帮助,赞一个