戏game
来源:互联网 发布:广电网络建阳分公司 编辑:程序博客网 时间:2024/05/02 07:20
按照正解的做法,我只得了80。
首先我们要明确这是一张竞赛图。
然后有一个点,在竞赛涂上如果存在环,那么就一定有三元的环。
这样找到的第一个三元环是1->3->4->1
观察一下图,看一下代码。嘻嘻
shipinjiangjie
#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<vector>#include<algorithm> #define N 5009using namespace std;int st[N],top,cst[N],pos[N],map[N][N];int vis[N],len,n;char s[N];bool dfs(int x){ vis[x]=1,st[++top]=x,pos[x]=top; for(int i=1;i<=n;i++) if(map[x][i]) { if(vis[i]==1) { len=top-pos[i]+1; for(int j=0;j<len;j++) cst[j+1]=st[pos[i]+j]; return true; } else if(vis[i]==0) { bool found=dfs(i); if(found) return true; } } top--;vis[x]=2; return false;}void answer(){ for(int i=2;i<len;i++) if(map[cst[i+1]][cst[1]]){ printf("%d %d %d",cst[1],cst[i],cst[i+1]); }}int main(){ scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%s",s); for(int j=0;j<strlen(s);j++) map[i][j+1]=(s[j]=='1'); } for(int i=1;i<=n;i++) { if(!vis[i]){ bool found=dfs(i); if(found) { answer(); return 0; } } } printf("-1\n"); return 0;}
阅读全文
1 0
- 戏game
- game
- game
- game
- game...
- Game
- Game
- Game
- Game
- game
- Game
- Game
- game
- game
- Game
- GAME
- Game
- Game
- java Array
- C++知识点之string,结合华为编程题:简单错误记录分析(附加容器pair知识点)
- MYSQL 最近知识总结(1)
- 算法二十一
- Collection讲解
- 戏game
- spring技术核心概念概要
- STL中vector使用详解
- 运营喵必知的内容社区搭建步骤详解
- 鸟叔Linux学习:第四章 首次登入与在线帮助
- windows下mongodb安装与使用整理
- c语言实现冒泡排序
- 写一个函数,给定N,返回斐波拉契数列第N项.
- 用client-go调用Kubernetes API