•bogdan2412
|
 |
« : August 11, 2006, 19:10:27 » |
|
Aici puteţi discuta despre problema Plimbare.
|
|
|
Memorat
|
|
|
|
•cristy
|
 |
« Răspunde #1 : August 11, 2006, 23:43:46 » |
|
cum se face desc in comp tare conexe in O(N+M)?
|
|
|
Memorat
|
... lipsa de inspiratie ...
|
|
|
•Cosmin
|
 |
« Răspunde #2 : August 12, 2006, 00:18:34 » |
|
http://zhuzeyuan.hp.infoseek.co.jp/ita/chap23.htmCLR sectiunea 23.5 Cam neintuitive demonstratiile de pe acolo, gasesti explicatii putin mai bune daca vei cauta pe google strongly connected components algorithm.
|
|
« Ultima modificare: August 12, 2006, 00:28:20 de către Cosmin »
|
Memorat
|
|
|
|
•pocaitu
|
 |
« Răspunde #3 : August 12, 2006, 11:36:50 » |
|
Nu vrea cineva sa-mi de-a un test , sa vad daca e gresit algoritmul meu? Mie imi merge la toate testele si pare foarte logic
|
|
|
Memorat
|
This is not a signature ! I repeat, this is not a signature !
|
|
|
•devilkind
|
 |
« Răspunde #4 : August 12, 2006, 14:11:59 » |
|
pai zi cum faci ca sa stim ce test sa iti dam
|
|
|
Memorat
|
|
|
|
•pocaitu
|
 |
« Răspunde #5 : August 12, 2006, 21:28:31 » |
|
 Pai retin toate conectiile in liste de adiacenta. Apoi iau fiecare punct in parte si consider toate posibilitatile de parcurgere a grafului incepand din acel punct(folosind un vector viz si un vector max si un vector st). daca dau de un punctul de la care am pornit vad daca k>max si tot asa . (k= nr el din st[] unde in st retin elementele vizitate). Acuma mie mi se pare algoritmu fara nici o greseala si iau 0 la toate testele.(poate e din cauza la memcpy-uri sau memset-uri care tot timpu fac figuri).  Uite tot algoritmu """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""' #include<fstream.h> int long st[105],b,d,c,a[105][105],i,d1,v[102],j,k,n,viz[105],u,max[105],max1,gasit; int main() {ifstream f("plimbare.in"); f>>n; for(i=1,j=(n*(n-1))/2;i<=j;i++) {f>>b>>c; a[b][++a[b][0]]=c; } for(i=1;i<=n;i++) {memset(viz,0,sizeof(viz)); memset(max,0,sizeof(max)); st[1]=i; k=1; while(k>0) {for(j=1,gasit=0,u=a[st[k]][0];j<=u;j++) if(max[st[k]]<a[st[k]][j]&&!viz[a[st[k]][j]]) {max[st[k]]=a[st[k]][j]; viz[a[st[k]][j]]=1; st[++k]=a[st[k-1]][j]; gasit=1; break; }
if(!gasit) {max[st[k]]=0; viz[st[k]]=0; k--; } if(st[k]==i&&k>1) {d=k; d1=n; if(k>max1) {max1=k; memcpy(v,st,sizeof(st)); } n=d1; k=d; viz[st[k]]=0; k--; } } } ofstream g("plimbare.out"); g<<max1-1<<'\n'; for(i=1;i<=max1-1;i++) g<<v[i]<<" "; g<<'\n'; g.close(); return 0; } """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""'
|
|
« Ultima modificare: August 19, 2006, 03:15:34 de către greco »
|
Memorat
|
This is not a signature ! I repeat, this is not a signature !
|
|
|
|
•pocaitu
|
 |
« Răspunde #7 : August 13, 2006, 19:31:19 » |
|
Fara nici o problema.mi se pare ca mi-a dat un test doua TLE.
|
|
|
Memorat
|
This is not a signature ! I repeat, this is not a signature !
|
|
|
•Cosmin
|
 |
« Răspunde #8 : August 13, 2006, 20:18:50 » |
|
Si cate puncte ai luat?
|
|
|
Memorat
|
|
|
|
•pocaitu
|
 |
« Răspunde #9 : August 13, 2006, 20:33:10 » |
|
Deci nici io nu credeam ca o sa imi intre in timp, da daca a intrat , unde e problema ? Ca am luat zero puncte pt WA . Asa ca imi da cineva un test sau nu ? Tinand cont de faptu ca n-ul e mai mic sau egal cu 100 si ca nu exista conectii decat pe un singur sens , nu pot sa zic ca ia kiar asa mult timp
|
|
« Ultima modificare: August 13, 2006, 20:35:17 de către pocaitu »
|
Memorat
|
This is not a signature ! I repeat, this is not a signature !
|
|
|
•Cosmin
|
 |
« Răspunde #10 : August 13, 2006, 20:38:36 » |
|
Pai cateodata algoritmii implementati gresit merg instantaneu  , daca luai vre-un test inseamna ca era ceva bun pe acolo. Ca sa faci toate ciclurile posibile iti trebuie un algoritm exponential, si eu nu prea am vazut un backtraking pe acolo. Primul test are vreo 10 noduri si ciclul optim e de lungime 4, deci daca era ceva corect ar fi trebuit sa iei cam cu orice algoritm macar 5 puncte.
|
|
« Ultima modificare: August 13, 2006, 20:41:31 de către Cosmin »
|
Memorat
|
|
|
|
•pocaitu
|
 |
« Răspunde #11 : August 13, 2006, 21:02:02 » |
|
Am lucrat algoritmul meu pas cu pas si merge excelent,exact asa cum vream eu sa mearga . De aceea am rugat pe cineva sa-mi dea un test . Deci nu merge instantaneu. Eu ma gandesc ca poate se opreste undeva pe parcurs din cauza unei erori , sau poate am uitat un lucru banal. Na, dar daca nu vrea nimeni sa-mi dea unu asta e; Si mor de curiozitate unde o fi greseala 
|
|
|
Memorat
|
This is not a signature ! I repeat, this is not a signature !
|
|
|
•Cosmin
|
 |
« Răspunde #12 : August 13, 2006, 21:10:01 » |
|
Pai tu nu iti poti genera sute de cazuri aleatoare? Si ai vazut in articolul cu solutii cum stii care e lungime maxima a unui ciclu. Deci iti ramane de facut o metoda care genereaza teste si alta care iti valideaza solutia.
|
|
|
Memorat
|
|
|
|
•Marius
|
 |
« Răspunde #13 : August 13, 2006, 21:12:19 » |
|
Noi gandim, masinile muncesc! 
|
|
« Ultima modificare: August 13, 2006, 21:56:24 de către Marius »
|
Memorat
|
Faceti lucrurile simplu: pe cat de simplu posibil, dar nu mai simplu.
|
|
|
•pocaitu
|
 |
« Răspunde #14 : August 13, 2006, 21:17:16 » |
|
Muncim si noi knd implementam trei programe pt unu . Stiu backtracking  . Kiar programu asta e un backtracking. Dar mi se pare ca am mai zis ca programu merge pe toate testele mele, deci nu aicea e problema NU poate fi gresita afisarea  ? Inca o intrebare: Ce da pt 10 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 2 3 4 2 2 5 2 6 7 2 8 2 2 9 2 10 4 3 3 5 3 6 7 3 8 3 3 9 3 10 4 5 6 4 4 7 8 4 4 9 4 10 5 6 7 5 8 5 5 9 5 10 6 7 6 8 6 9 6 10 8 7 7 9 7 10 8 9 8 10 9 10  mie imi da 7 2 3 5 6 8 4 7
|
|
« Ultima modificare: August 13, 2006, 22:22:08 de către pocaitu »
|
Memorat
|
This is not a signature ! I repeat, this is not a signature !
|
|
|
vladut.forum
Vizitator
|
 |
« Răspunde #15 : August 13, 2006, 23:55:44 » |
|
pai din cate vad io inccepi cu nodu 2...
si tot timpu tre sa incepi de la nodu 1 ..
vezi poate il omiti de la afisare
|
|
|
Memorat
|
|
|
|
•Cosmin
|
 |
« Răspunde #16 : August 14, 2006, 00:02:55 » |
|
Unde scrie in problema ca trebuie sa incepi cu nodul 1? 
|
|
|
Memorat
|
|
|
|
•pocaitu
|
 |
« Răspunde #17 : August 14, 2006, 00:03:38 » |
|
Nu incep cu nodul unu daca el nu face parte din ciclul optim.
|
|
|
Memorat
|
This is not a signature ! I repeat, this is not a signature !
|
|
|
•lucian666
Client obisnuit

Karma: 16
Deconectat
Mesaje: 84
|
 |
« Răspunde #18 : Decembrie 11, 2012, 00:05:12 » |
|
Salutare  . Am facut la problema aceasta un algoritm ( plus-minus ) pt determinarea componentelor conexe + un back pt a gasi ciclul corect.Iau doar 70 pct ,restul TLE.Exista ceva mai optim decat atat  ? Multumesc Anticipat!!!!
|
|
|
Memorat
|
|
|
|
•CosminRusu
|
 |
« Răspunde #19 : Iunie 26, 2013, 09:20:44 » |
|
Da. Lasa plus minus si incearca algoritmul lui Tarjan pentru componentele conexe  .
|
|
|
Memorat
|
|
|
|
•AlexandruValeanu
|
 |
« Răspunde #20 : August 07, 2013, 18:40:51 » |
|
Am luat 70p folosind si algoritmul lui Tarjan si cel al lui Kosaraju pentru componente + backtracking. Se poate lua 100p cu backtracking ?
|
|
|
Memorat
|
|
|
|
•japjappedulap
Strain
Karma: 1
Deconectat
Mesaje: 27
|
 |
« Răspunde #21 : Noiembrie 02, 2014, 23:55:22 » |
|
Spuneti-mi si mie, ce au testele 9, 11, 13, 15, 17, 19 asa special?? Cu tarjan + back iau 70. Pe testele mentionate iau TLE, iar pe restu' OK, 0ms.
|
|
|
Memorat
|
|
|
|
|