
PAT-图论 BFS DFS Dijkstra+DFS
分类整理志在必得
江船夜雨听笛
我无法原谅 什么都不做 却抱有期待的自己 行动起来 必须行动起来
展开
-
pat-1130 测试点3 4
二叉树与中缀表达式的结合dfs#include<iostream>using namespace std;struct node{ string data; int left,right;}a[100];string dfs(int root){ if(a[root].left==-1&&a[root].right==-1) return a[root].data; else if(a[root].left==-1&&a[root].rig.原创 2021-01-23 21:44:36 · 256 阅读 · 0 评论 -
pat-1030
#include<iostream>#include<vector>#include<algorithm>using namespace std;const int inf=1000000000;int sr,endd,cc[510][510],a[510][510],minc=inf,dsr[510],visit[510]={0};vector<int> tempath,path,pre[510];void dfs(int f){ if(f.原创 2021-01-22 09:37:20 · 85 阅读 · 0 评论 -
pat-1003 经典模板深度剖析
人总要摸着石头过河~错误都是难得的经验#include<iostream>#include<vector>#include<algorithm>using namespace std;int sr,endd,w[510],tempw=0,maxt=0,a[510][510],cnt=0,dsr[510],visit[510]={0};//w0-n w[0]=1const int inf=1000000000;vector<int> pre[.原创 2021-01-21 23:41:50 · 109 阅读 · 0 评论 -
pat-1021
#include<iostream>#include<vector>#include<set>#include<algorithm>using namespace std;//一般转几个圈是段错误没结果 int maxh=0,visit[10010]={0};//maxh rctvector<vector<int>>vv;vector<int> temp;//temp条件重置 set<int>s.原创 2021-01-21 19:15:21 · 85 阅读 · 0 评论 -
pat-1034
#include<iostream>#include<vector>#include<map>#include<algorithm>using namespace std;//phone给的是边数没给点数要乘以二(注意) int visit[2010]={0},numm=0,weight=0,a[2010][2010],head=0,nt=1,w[2010]={0};//numm要条件重置,nt从1开始不能和判断有没有的0冲突 map<st.原创 2021-01-21 15:21:24 · 119 阅读 · 0 评论 -
pat-1072
有一个测试点没过,方向偏的有点厉害,不弄了就吸取一下里面的教训吧//只看点数即可不要去看边数邻接矩阵法适用于稠密图,只要1000之内,用邻接表即可 #include<iostream>#include<map>#include<vector>#include<algorithm>#include<string>using namespace std;const int inf=1000000000; int _1,_2,m,.原创 2021-01-21 02:17:06 · 151 阅读 · 0 评论 -
pat-1013
判断连通分量个数dfs#include<iostream>#include<algorithm>using namespace std;int visit[1010],n,a[1010][1010];//条件重置 void dfs(int node){ visit[node]=1; for(int i=1;i<=n;i++){ if(visit[i]==0&&a[node][i]==1){ visit[i]=1; dfs(i.原创 2021-01-20 23:36:50 · 91 阅读 · 0 评论 -
pat-1076
bfs 入一个访问一个,不是出一个访问一个#include<iostream>#include<vector>#include<queue>#include<vector>using namespace std;vector<int> v[1009];struct node{ int id,l;};queue<node>q;int visit[1009],ll,cnt=0;//visit,cnt需重置 v..原创 2021-01-20 19:26:42 · 86 阅读 · 0 评论 -
pat-1087
#include<iostream>#include<algorithm>#include<vector>#include<map>using namespace std;vector<int> tempath,anspath,pre[209];map<string,int> si;map<int,string>is;const int inf=1000000000;int cnt=0,maxav=0,m.原创 2021-01-20 15:52:54 · 123 阅读 · 0 评论 -
pat-1111
必须二刷不废话#include<iostream>#include<vector>#include<algorithm>using namespace std;vector<int> mindis,mint;int sr,fin,dispre[509],tpre[509];int n,m,a[509][509],t[509][509],_1,_2,_3,_4,_5,visit[509]={0},dist1,t1,u,distsr[509],p原创 2021-01-20 01:12:40 · 161 阅读 · 1 评论 -
pat-1122
之前好像做过类似的#include<iostream>#include<vector>#include<set>using namespace std;vector<int> path;int a[209][209]={0};bool cflag=true;void dfs(vector<int>path1){//end 判断这个部分图是否连通 for(int i=1;i<path1.size();i++) { .原创 2021-01-19 15:10:58 · 106 阅读 · 0 评论 -
pat-1126
原来我就像印度电工,哪用到就在那声明,特别乱而且容易出戳,现在我变成德国电工了哈哈哈哈~#include<iostream>#include<vector>using namespace std;vector<int>nume[509];//记录度数出边数 int visit[509]={0},cnt=0;//记录是否访问过q //判断是否连通,看看顶点数是多少,自然不能有重复访问顶点的情况//cnt 1 // cnt 不能固定在参数列表考虑到递归对.原创 2021-01-19 11:54:20 · 95 阅读 · 0 评论 -
pat-1131
需二刷注意一下输出格式!!!!!%04d这他娘的就是个坑!!!#include<iostream>#include<vector>#include<unordered_map>using namespace std;vector<int> path,tempath,v[10009];unordered_map<int,int> line;int anscnt,anstcnt, start,end1, visit[10009..原创 2021-01-19 00:31:25 · 143 阅读 · 0 评论 -
pat-1142
#include<iostream>#include<vector>using namespace std;//编写完成后再大体看一遍知道哪一块干什么事情,之后再运行样例否则出了错误 找自己在哪写的还需要时间而且还容易懵逼(注意) int a[209][209];int nv,ne;int main(){ cin>>nv>>ne; for(int i=0;i<ne;i++) {int ll,rr; cin>>.原创 2021-01-17 23:16:48 · 112 阅读 · 0 评论 -
pat-1146
#include<iostream>#include<vector>using namespace std;int n,m;//入度表 int indegree[1009]={0};vector<int> v[1009];int main(){ int ksge=0; scanf("%d %d",&n,&m); //从一开始少输入一组数据 (注意) for(int i=0;i<m;i++) { int q,end; .原创 2021-01-17 20:05:54 · 116 阅读 · 0 评论 -
pat-1150
除了逻辑复杂一些其他的也没啥要想全面 分阶段 如果约束是层层叠加的 由宏入微,不要直接考虑每个细节,有可能考虑的不全面#include<iostream>#include<set>#include<vector>using namespace std;//先将要输入的变量分为全局的和局的区别int n,edge;int a[300][300]={0};//一开始有一个测试点没过 是因为初始的ans值设的9999导致太小了,最小的值都比他大200*1..原创 2021-01-17 16:15:42 · 147 阅读 · 0 评论 -
pat-1154
#include<iostream>#include<vector>#include<set>using namespace std;int n,m;bool color=true;struct node{ int ll,rr; } ; vector<node> v; int main() { int k; cin>>n>>m; for(int i=0;i<m;i++) { int.原创 2021-01-17 14:10:48 · 95 阅读 · 0 评论