Właśnie męczę się z tym zadaniem, ale cały czas mam TLE.
Czy mógłby ktoś mi powiedzieć co w moim rozwiązaniu jest nie tak?
#include<stdio.h>
#include<list>
#include<queue>
#include<stack>
#define MAXN 1002
using namespace std;
class Graf{
private:
int n,nrGrafu;
bool odwiedzony[MAXN];
list<int> graf[MAXN];
queue<int> kol;
void DFS(int start);
void BFS(int start);
public:
Graf(int nr);
void obsluz();
};
Graf::Graf(int nr){
nrGrafu=nr;
scanf("%d", &n);
for(int i=1; i<=n; i++){
int m,o,t;
scanf("%d %d",&o,&m);
for(int j=0;j<m;j++)
{
scanf("%d",&t);
graf[o].push_back(t);
};
};
};
void Graf::obsluz(){
printf("graph %d\n", nrGrafu);
while(1){
int typ, sta;
scanf("%d %d",&sta, &typ);
if( sta == 0) break;
for(int i=0; i<=n; i++) odwiedzony[i]=false;
if (typ==0) DFS(sta);
if (typ==1) BFS(sta);
printf("\n");
};
};
void Graf::DFS(int i)
{
odwiedzony[i]=true;
printf("%d ",i);
for(list<int>::iterator k=graf[i].begin(); k!=graf[i].end();k++)
if(odwiedzony[*k]==false) DFS(*k);
};
void Graf::BFS(int start){
kol.push(start);
bool odwiedzony[n+1];
for(int i=0; i<=n; i++) odwiedzony[i]=false;
odwiedzony[start]=true;
while(!kol.empty()){
printf("%d ", kol.front());
list<int>::iterator i;
for(i=graf[kol.front()].begin(); i != graf[kol.front()].end(); ++i){
if(!odwiedzony[*i]) kol.push(*i);
odwiedzony[*i]=true; };
kol.pop();
};
};
int main(){
int d;
scanf("%d", &d);
for(int nrGr=1;nrGr<=d;nrGr++){
Graf grafik(nrGr);
grafik.obsluz();
};
return 0;
};
Cześć. Ponieważ mam pytanie nt. tego samego zadania to podepnę się do tego wątku. Otóż, kiedy próbowałem wysłać rozwiązanie ( pl.spoj.pl/submit/ROWNANIE/) otrzymałem informację:
Wystąpił błąd
Wrong problem!
Czy chodzi o to, że nie można już wysyłać rozwiązań? Nie mogę znaleźć nic na ten temat w FAQ więc liczę, że ktoś po prostu spotkał się z taką sytuacją.
pomógł mi ten wątek, wywaliłam się naprawdę na głupich błędach
wystarczyło, jak zmieniłam typy danych na unsigned long int i unsigned long long int.
**********
dla testu:
**********
7
9
432 12 543 5343 7862 234557 67 234 546
5
1000000 10000000 100000 1000003 1011111
17
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
5
12345 76543 97643 34235 683243
8
26345982 234756289 23654726354 95869847 234527346 46459867 2364527364 9536845867
3
2368457236485 364857636457 2346572364572344
9
1523 2134 345 657 4356 7958 2345 587 3245
**********
odpowiedź:
**********
4881123190683544848
10111140333330000000
12252240
14657352316696420337
18080302788431356660
12334572626437093208
15552605414187387324
Ja mam spory problem. Ten program jest zdecydowanie najbardziej skomplikowanym programem, jaki do tej pory napisałem (dopiero zaczynam programować), więc byłbym bardzo szczęśliwy, jeżeliby mi przeszło jego rozwiązanie. W domu wszystko mi działa bez problemu (używam Dev C++), jednak kiedy wysyłam rozwiązanie na serwer, to wyskakuje mi błąd SIGFPE.
Czy ktoś mógłby mi wskazać błąd w moim programie?
#include <iostream>
using namespace std;
int nwd(int a, int b)
{
while(a>0 && b>0)
{
a=a%b;
if(a==0)
{
break;
}
b=b%a;
}
return a+b;
}
int nww(int a, int b)
{
return a*b/nwd(a, b);
}
int main()
{
int n, a, i, b;
cin>>n;
unsigned long long int nwww[n];
b=n;
while(b)
{
cin>>a;
unsigned long long int tab[a];
i=a;
while(i)
{
cin>>tab[i-1];
i--;
}
while(a>1)
{
tab[a-2]=nww(tab[a-2], tab[a-1]);
a--;
}
nwww[b-1]=tab[0];
b--;
}
while(n)
{
cout<<nwww[n-1]<<endl;
n--;
}
system("pause");
return 0;
}