Advertisement
sak1b

template shob eksathe

Oct 4th, 2017
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.37 KB | None | 0 0
  1. BFS --------Start----------
  2. #include<bits/stdc++.h>
  3.  
  4. #define MAXX 105
  5.  
  6. using namespace std;
  7.  
  8. bool visit[MAXX];
  9.  
  10. vector <int> edges[MAXX];
  11.  
  12.  
  13. int level[MAXX];
  14. int cnt[MAXX];
  15.  
  16. int res=0;
  17.  
  18. void BFS(int x)
  19. {
  20.  
  21. for(int i=0;i<MAXX;i++)
  22. {
  23. visit[i]=false;
  24. level[i]=0;
  25. //cnt[i]=0;
  26. }
  27.  
  28. queue <int> q;
  29.  
  30. level[x]=0;
  31. visit[x]=true;
  32. q.push(x);
  33.  
  34.  
  35. while(!q.empty())
  36. {
  37. int src= q.front();
  38. // cout<<src <<" ";
  39. q.pop();
  40.  
  41. int sz = edges[src].size();
  42.  
  43. for( int i=0;i<sz; ++i)
  44. {
  45. int des=edges[src][i];
  46. if(visit[des]==false)
  47. {
  48.  
  49. visit[des]=true;
  50. level[des]= level[src]+1;
  51. q.push(des);
  52.  
  53.  
  54. }
  55. }
  56. }
  57.  
  58. }
  59.  
  60. int main()
  61. {
  62.  
  63. //freopen("input.txt","r",stdin);
  64. int t,cs=1;
  65. int edge,node;
  66.  
  67. cin>>t;
  68.  
  69. while(t--)
  70. {
  71. scanf("%d%d",&node,&edge);
  72. int x,y;
  73. int a,b;
  74.  
  75. for(int i=0;i<MAXX;i++)
  76. {
  77. edges[i].clear();
  78. }
  79.  
  80. for(int i=1;i<=edge;++i)
  81. {
  82. scanf("%d%d",&x,&y);
  83.  
  84. edges[x].push_back(y);
  85. edges[y].push_back(x);
  86. }
  87.  
  88.  
  89.  
  90. BFS(0);
  91.  
  92. printf("Case %d: %d\n",cs,res);
  93. cs++;
  94.  
  95.  
  96.  
  97. }
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104. return 0;
  105. }
  106.  
  107.  
  108.  
  109. BFS --------End----------
  110.  
  111. Dijkstra---start-----
  112.  
  113. #include <iostream>
  114. #include <cstring>
  115. #include <cstdio>
  116. #include <vector>
  117. #include <set>
  118. #include <map>
  119. #include <queue>
  120. #include <cmath>
  121. #include <algorithm>
  122. using namespace std;
  123.  
  124. #define pb push_back
  125. #define sz size()
  126. #define x first
  127. #define y second
  128. #define N 100010
  129. typedef long long ll;
  130. typedef pair<int,ll>pii;
  131. typedef vector<pii>vii;
  132. const ll oo=(ll)1e18;
  133. bool debug;
  134. int n,m,a,b,c,par[N];
  135. ll dist[N];
  136. vii g[N];
  137. vector<int>v;
  138.  
  139. struct cf{
  140. bool operator()(const pii &a,const pii &b)const{
  141. return (a.y>b.y);
  142. };
  143. };
  144. void print_graph()
  145. { cout<<endl;
  146. for(int i=0;i<n;i++)
  147. {
  148. int siz=g[i].size();
  149. cout<<i<<"-> ";
  150. for(int j=0;j<siz;j++)
  151. {
  152. cout<<g[i][j].first<<","<<g[i][j].second<<" ";
  153. }
  154. printf("\n");
  155.  
  156. }
  157. cout<<endl;
  158. }
  159.  
  160. void path_print(int index)
  161. {
  162. if(par[index]==-1)
  163. {
  164.  
  165. return;
  166.  
  167. }
  168.  
  169.  
  170. path_print(par[index]);
  171.  
  172. printf("%d ",par[index]);
  173.  
  174. // cout<<0<<" ";
  175.  
  176.  
  177. }
  178.  
  179. int main(){
  180. debug=0;
  181. freopen("input1.txt","r",stdin); ///file reading
  182. scanf("%d%d",&n,&m);
  183. for (int i=0;i<m;i++){
  184. scanf("%d%d%d",&a,&b,&c);
  185.  
  186. g[a].pb(pii(b,c));
  187. /// g[b].pb(pii(a,c));
  188. }
  189.  
  190. print_graph();
  191.  
  192. priority_queue<pii,vii,cf>q;
  193.  
  194. for (int i=0;i<n;i++)
  195. dist[i]=oo;
  196.  
  197. q.push(pii(0,0));
  198. par[0]=-1;
  199. dist[0]=0;
  200. while (!q.empty()){
  201. pii top=q.top();
  202. q.pop();
  203. int v=top.x;
  204. ll d=top.y;
  205. if (d<=dist[v]){
  206. for (vii::iterator it=g[v].begin();it!=g[v].end();it++){
  207. int v2=it->x;
  208. ll d2=it->y;
  209. if (dist[v2]>dist[v]+d2){
  210. dist[v2]=dist[v]+d2;
  211. par[v2]=v;
  212. q.push(pii(v2,dist[v2]));
  213. }
  214. }
  215. }
  216. }
  217.  
  218.  
  219. for(int i=0;i<n;i++)
  220. {
  221. printf("node: %d path: ",i);
  222. path_print(i);
  223. printf("%d cost: %lld\n",i,dist[i]);
  224. }
  225.  
  226. return 0;
  227. }
  228.  
  229.  
  230. Dijkstra----End------
  231.  
  232. BFS_2D_grid-----start----
  233.  
  234. #include<bits/stdc++.h>
  235.  
  236. using namespace std;
  237.  
  238.  
  239.  
  240. char grid[25][25];
  241. int visit[25][25];
  242. int vis[25][25];
  243.  
  244. int dc[]={0,0,+1,-1};
  245. int dr[]={+1,-1,0,0};
  246.  
  247.  
  248.  
  249. int rr,cc,q,t;
  250. int cs=1;
  251.  
  252. void print_graph()
  253. {
  254. for(int i=0;i<rr;i++)
  255. {
  256. for(int j=0;j<cc;j++)
  257. {
  258. printf("%c",grid[i][j]);
  259. // visit[i][j]=0;
  260. }
  261. printf("\n");
  262. }
  263. }
  264.  
  265. int BFS(int r,int c)
  266. {
  267. int cnt=1;
  268.  
  269. queue< pair<int,int> > q;
  270.  
  271. memset(visit,0,sizeof (visit));
  272.  
  273. visit[r][c]=1;
  274.  
  275. q.push(make_pair(r,c));
  276.  
  277.  
  278. while(!q.empty())
  279. {
  280. int a=q.front().first; //row
  281. int b=q.front().second; //column
  282.  
  283. q.pop();
  284.  
  285. // cout<<a<<" "<<grid[a][b]<<" "<<b<<endl;
  286.  
  287.  
  288. for(int k=0;k<4;k++)
  289. {
  290. int row=dr[k]+a; //row
  291. int clm=dc[k]+b; //clm
  292.  
  293. if(row>=0 && row<rr && clm>=0 && clm<cc && visit[row][clm]==0 && grid[row][clm]!='#')
  294. {
  295.  
  296. visit[row][clm]=1;
  297. q.push(make_pair(row,clm));
  298. cnt++;
  299. }
  300. }
  301.  
  302. }
  303.  
  304. return cnt;
  305.  
  306.  
  307.  
  308. }
  309.  
  310. int main()
  311. {
  312.  
  313. // freopen("input.txt","r",stdin);
  314. scanf("%d",&t);
  315.  
  316.  
  317.  
  318. while(t--)
  319. {
  320. scanf("%d%d",&cc,&rr);
  321. int pos_x=0;
  322. int pos_y=0;
  323.  
  324. for(int i=0;i<rr;i++)
  325. {
  326. for(int j=0;j<cc;j++)
  327. {
  328. scanf(" %c",&grid[i][j]);
  329. if(grid[i][j]=='@')
  330. {
  331. pos_x=i;
  332. pos_y=j;
  333. }
  334. }
  335. }
  336. // print_graph();
  337.  
  338. int z=BFS(pos_x,pos_y);
  339. printf("Case %d: %d\n",cs,z);
  340. cs++;
  341.  
  342.  
  343. }
  344.  
  345.  
  346.  
  347. return 0;
  348.  
  349. }
  350.  
  351. BFS_2D_grid-----END----
  352.  
  353. #DFS(WEIGHT) -----start-----
  354.  
  355. #include<bits/stdc++.h>
  356.  
  357. using namespace std;
  358.  
  359.  
  360. vector< pair<int,int> > g[30004];
  361. int visit[30004];
  362.  
  363. int max_cost=0;
  364. int end_point=0;
  365.  
  366. void dfs(int x,int y)
  367. {
  368. if(y>max_cost)
  369. {
  370. max_cost=y;
  371. end_point=x;
  372. }
  373. //cout<<x<<" and cost :"<<y<<endl;;
  374. visit[x]=1;
  375. for(vector< pair<int,int> >::iterator it=g[x].begin();it!=g[x].end();it++)
  376. {
  377. //cout<<it->first<<" and "<<it->second<<endl;
  378. if(visit[it->first]==0)
  379. dfs(it->first,it->second+y);
  380. }
  381. }
  382.  
  383. int main()
  384. {
  385. // freopen("input.txt","r",stdin);
  386.  
  387. int a,b,c,n,t;
  388. int cs=1;
  389. cin>>t;
  390.  
  391. while(t--)
  392. {
  393. cin>>n;
  394.  
  395. for(int i=0;i<30004;i++)
  396. {
  397. g[i].clear();
  398. }
  399. for(int i=0;i<n-1;i++)
  400. {
  401. scanf("%d%d%d",&a,&b,&c);
  402. g[a].push_back(make_pair(b,c));
  403. g[b].push_back(make_pair(a,c));
  404.  
  405. }
  406.  
  407. max_cost=0;
  408. memset(visit,0,sizeof visit);
  409. dfs(0,0);
  410.  
  411. max_cost=0;
  412. memset(visit,0,sizeof visit);
  413. dfs(end_point,0);
  414.  
  415. printf("Case %d: %d\n",cs,max_cost);
  416. cs++;
  417.  
  418.  
  419. }
  420.  
  421.  
  422.  
  423.  
  424. return 0;
  425. }
  426. DFS(Weight)-----END
  427.  
  428. DFS(normal)------start----
  429. #include<bits/stdc++.h>
  430.  
  431. #define MAXX 100005
  432.  
  433. using namespace std;
  434.  
  435. bool visit[MAXX];
  436.  
  437. vector <int> edges[MAXX];
  438.  
  439.  
  440. int level[MAXX];
  441. int cnt[MAXX];
  442.  
  443. int res=0;
  444.  
  445. void DFS(int src)
  446. {
  447. cout<<src<<endl;
  448. visit[src]=true;
  449. int sz = edges[src].size();
  450.  
  451. for( int i=0;i<sz; ++i)
  452. {
  453. int des=edges[src][i];
  454. if(visit[des]==false)
  455. {
  456. ///level korte hole ekhane korte hobe
  457. DFS(des);
  458. }
  459. }
  460.  
  461.  
  462. }
  463.  
  464. int main()
  465. {
  466.  
  467. freopen("input.txt","r",stdin);
  468. int t,cs=1;
  469. int edge,node;
  470.  
  471. cin>>t;
  472.  
  473. while(t--)
  474. {
  475. scanf("%d",&node);
  476. edge=node-1;
  477. int x,y;
  478. int a,b;
  479.  
  480. for(int i=0;i<MAXX;i++)
  481. {
  482. edges[i].clear();
  483. visit[i]=false;
  484. }
  485.  
  486. for(int i=1;i<=edge;++i)
  487. {
  488. scanf("%d%d",&x,&y);
  489.  
  490. edges[x].push_back(y);
  491. // edges[y].push_back(x);
  492. }
  493. DFS(1);
  494.  
  495. printf("Case %d: %d\n",cs,res);
  496. cs++;
  497.  
  498. }
  499.  
  500. return 0;
  501. }
  502.  
  503. DFS----End------
  504.  
  505. BFS(bicoloring)----start----
  506. #include<bits/stdc++.h>
  507. #define mxnd 100005
  508. #define ll long long
  509. #define MAX(a,b) ((a>b)?a:b)
  510. using namespace std;
  511.  
  512. vector<int> edges[mxnd];
  513.  
  514. int visit[mxnd];
  515. int color[mxnd];
  516. int exist[mxnd];
  517. queue<int> q;
  518. ll blk=0,wht=0;
  519. void BFS(int a)
  520. {
  521. visit[a]=1;
  522. color[a]=1;
  523. blk++;
  524. q.push(a);
  525.  
  526. while(!q.empty())
  527. {
  528. int node=q.front();
  529.  
  530. q.pop();
  531.  
  532. // cout<<node<<": clr:"<<color[node]<<endl; ///extra
  533.  
  534. int sz=edges[node].size();
  535.  
  536. for(int i=0;i<sz;++i)
  537. {
  538.  
  539. if(visit[edges[node][i]]==0 && color[edges[node][i]]==-1)
  540. {
  541. color[edges[node][i]]=1-color[node];
  542. visit[edges[node][i]]=1;
  543. q.push(edges[node][i]);
  544. if( color[edges[node][i]]==1) blk++;
  545. else wht++;
  546. }
  547. }
  548.  
  549.  
  550. }
  551.  
  552. }
  553.  
  554. int main()
  555. {
  556. // freopen("input.txt","r",stdin);
  557. int n,e;
  558. int x,y;
  559.  
  560.  
  561. for(int i=0;i<mxnd;i++)
  562. {
  563. visit[i]=0;
  564. color[i]=-1;
  565. }
  566.  
  567. scanf("%d",&n);
  568.  
  569.  
  570. for(int i=1;i<n;i++)
  571. {
  572. scanf("%d%d",&x,&y);
  573. edges[x].push_back(y);
  574. edges[y].push_back(x);
  575. }
  576.  
  577. BFS(1);
  578.  
  579. if(blk+wht!=n)
  580. {
  581. cout<<"0"<<endl;
  582. return 0;
  583. }
  584. ll res=0;
  585. for(int i=1;i<=n;i++)
  586. {
  587. if(color[i]==1)
  588. {
  589. res=res+(abs(wht-edges[i].size()));
  590. // cout<<i<<endl;
  591. // cout<<edges[i].size()<<endl;
  592. }
  593. }
  594.  
  595. cout<<res<<endl;
  596.  
  597.  
  598.  
  599. return 0;
  600. }
  601. -----BFS(bicoloring)-----end------
  602.  
  603. knapsack ----start---
  604.  
  605. #include <bits/stdc++.h>
  606.  
  607. #define MAX(a,b) ((a>b)?a:b)
  608. #define MIN(a,b) ((a<b)?a:b)
  609. #define loop(i, a, b) for(int i=(a);i<=(b);i++)
  610.  
  611. #define pf(x) printf(x);
  612. #define dbg(x) printf("\n--bug: %d --\n",x)
  613. #define PI 2*acos(0.0)
  614. #define all(x) x.begin(),x.end()
  615. #define ll long long
  616. #define pb push_back
  617. #define NL printf("\n")
  618.  
  619.  
  620. using namespace std;
  621. struct items{
  622. int time,des,val,idx;
  623. }a[105];
  624. int n;
  625. int dp[105][2005];
  626. int dir[105][2005];
  627. vector<items> res;
  628. bool cmp(items a,items b)
  629. {
  630. return a.des<b.des; ///comparison argument
  631. }
  632.  
  633. bool cmp_idx(items a,items b)
  634. {
  635. return a.idx<b.idx; /// if original sequence is required then
  636. }
  637.  
  638. int fun(int item,int taken)
  639. {
  640. //cout<<"working on: "<<item<<" "<<taken<<endl;
  641. if(item>=n) return 0;
  642.  
  643. if(dp[item][taken]!=-1) return dp[item][taken];
  644.  
  645. int profit1=0;
  646. int profit2=0;
  647.  
  648. if((taken+a[item].time) < a[item].des)
  649. {
  650. profit1= a[item].val + fun(item+1,taken+a[item].time);
  651. }
  652. else profit1=0;
  653.  
  654. profit2=fun(item+1,taken);
  655.  
  656. dir[item][taken]=(profit1>profit2)?1:2;
  657.  
  658. return dp[item][taken]=max(profit1,profit2);
  659. }
  660. void solution_print(int item,int taken)
  661. {
  662.  
  663. if(dir[item][taken]==1)
  664. {
  665. res.pb(a[item]);
  666. solution_print(item+1,taken+a[item].time);
  667. }
  668. else if(dir[item][taken]==2)
  669. {
  670. solution_print(item+1,taken);
  671. }
  672. }
  673. int main()
  674. {
  675. // freopen("input.txt","r",stdin);
  676. for(int i=0;i<105;i++)
  677. {
  678. for(int j=0;j<2005;j++)
  679. {
  680. dp[i][j]=-1;
  681. dir[i][j]=-1;
  682. }
  683.  
  684. }
  685.  
  686. cin>>n;
  687. loop(i,0,n-1)
  688. {
  689. scanf("%d%d%d",&a[i].time,&a[i].des,&a[i].val);
  690. a[i].idx=i+1; /// +1 lagbe indexing 1 theke bujhanor jonno
  691. }
  692.  
  693.  
  694. sort(a,a+n,cmp);
  695. // loop(i,0,n-1) cout<<a[i].time<<" "<<a[i].des<<" "<<a[i].val<<endl;
  696. // NL;
  697. cout<<fun(0,0)<<endl;
  698.  
  699. solution_print(0,0);
  700.  
  701.  
  702. // sort(all(res),cmp_idx);
  703. cout<<res.size()<<endl;
  704.  
  705. for(int i=0;i<res.size();i++)
  706. {
  707. printf("%d ",res[i].idx);
  708. }
  709. NL;
  710.  
  711. return 0;
  712. }
  713.  
  714. Knapsack ----end-----
  715. ////bool operator<(const pq &x)const{return pw>x.pw;}}; //Min Priority_queue
  716. ////priority_queue<int,vi,greater<int> >Q; // Min Priority queue for One element.
  717. ////int rrr[]={1,0,-1,0};int ccc[]={0,1,0,-1}; //4 Direction
  718. ////int rrr[]={1,1,0,-1,-1,-1,0,1};int ccc[]={0,1,1,1,0,-1,-1,-1}; //8 direction
  719. ////int rrr[]={2,1,-1,-2,-2,-1,1,2};int ccc[]={1,2,2,1,-1,-2,-2,-1};//Knight Direction
  720. ////int rrr[]={2,1,-1,-2,-1,1};int ccc[]={0,1,1,0,-1,-1}; //Hexagonal Direction
  721. ////int month[]={31,28,31,30,31,30,31,31,30,31,30,31}; //month
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement